Grep
Find 兩次返回相同的路徑,但被截斷
我正在執行這個
find
命令:find $HOME * -depth -type d -iname *bowtie* | grep "bowtie*-*1[^2]"
我的預期輸出是:
/home/user/Documents/scripts/bowtie1.3.0-linux-x86_64 /home/user/Documents/scripts/bowtie-1.3.0-linux-x86_64
但它返回這個:
/home/user/Documents/scripts/bowtie1.3.0-linux-x86_64 /home/user/Documents/scripts/bowtie-1.3.0-linux-x86_64 Documents/scripts/bowtie1.3.0-linux-x86_64 Documents/scripts/bowtie-1.3.0-linux-x86_64
如何修改
find
命令以僅顯示前兩個結果?
您正在執行
find
多個相同的搜尋路徑。您正在使用$HOME
以及生成的任何名稱*
。*
顯然會擴展到一些目錄,其中包括您正在尋找的名稱。建議:
find "$HOME" -type d -name 'bowtie*1.[!2]*'
以上還通過更有創意地
grep
使用測試消除了你的問題。-name
在呼叫find
.該模式匹配以 開頭
bowtie
然後包含的名稱1.n
,其中n
is not2
。代替[!2]
,您可以使用[13-9]
強制匹配除 之外的整數2
,而不僅僅是除 之外的任何字元2
。