Grep

Find 兩次返回相同的路徑,但被截斷

  • October 5, 2021

我正在執行這個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,其中nis not 2。代替[!2],您可以使用[13-9]強制匹配除 之外的整數2,而不僅僅是除 之外的任何字元2

引用自:https://unix.stackexchange.com/questions/671932