Find

按模式查找文件,但忽略其他具有相似模式的文件

  • October 6, 2021

我有一個目錄,其中包含子目錄,我需要獲取其中一些子目錄的名稱,但有一個與我想忽略的模式相似的目錄。

例如,如果子目錄列表是這樣的:

Name_One
Not_needed1
Name_Two
Name_Three
Not_needed2
Name_Zero

我想將子目錄 Name_One、Name_Two 和 Name_Three 的名稱儲存在變數中,但我想忽略 Name_0。

此外,每個項目的命名都會發生變化,但始終遵循 Name_Number 的模式,而 Name_Zero 始終是需要排除的模式。

我正在使用 Mac 作業系統。

嘗試:

find . -type d -name 'Name_*' ! -name 'Name_Zero'

對於目錄名稱,Name_[digit]僅排除目錄Name_0

find . -type d ! -name 'Name_0' -regex './Name_[0-9]*'

如果您也有子目錄,請使用:

find . -type d ! -name 'Name_0' -regex '.*/Name_[0-9]*'

上面的正則表達式匹配與模式匹配的目錄名稱Name_[zero-or-more-digits],為了避免匹配 on Name_,請'.*/Name_[0-9][0-9]*'改用。

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