Find
如何根據適用於文件路徑名的表達式查找目錄(或文件等)
我正在嘗試根據適用於文件路徑的表達式查找/提取目錄。例如,我使用了以下命令:
find . -type d -links 2
要獲取如下所示的目錄列表:
./foo/ABC/W ./foo/ABC/X ./foo/ABC/Y ./foo/ABC/Z ./foo/BCD/W ./foo/BCD/X ./foo/BCD/Y ./foo/BCD/Z ./foo/CDE/W ./foo/CDE/X ./foo/CDE/Y ./foo/CDE/Z ./bar/CDE/V ./bar/CDE/Q ./bar/BCD/V ./bar/BCD/Q ./bar/ABC/V ./bar/ABC/Q
我想知道如何獲取此列表,並僅提取其中包含“CDE”的文件路徑:
./foo/CDE/W ./foo/CDE/X ./foo/CDE/Y ./foo/CDE/Z ./bar/CDE/V ./bar/CDE/Q
這是我到目前為止嘗試過的,當我嘗試時它什麼也沒輸出:
find . -type d -links 2 -name "CDE" -print
$ find . -type d -links 2 -path '*CDE*' ./foo/CDE/X ./foo/CDE/Z ./foo/CDE/W ./foo/CDE/Y ./bar/CDE/Q ./bar/CDE/V
或使用
find . -type d -links 2 -path '*/CDE/*'
如果您知道
CDE
要查找的路徑中間某處的子目錄的名稱。
find . -type d -links 2 -name "CDE" -print
匹配基本名稱完全正確
CDE
(因為-name CDE
)並且沒有子目錄(因為-links 2
)的目錄。
/
文件的基本名稱就在其路徑的最後一位之後。例如,基本名稱./foo/CDE/W
是W
。從這裡您可以看到沒有一個目錄符合這兩個條件。你在追求
find . -type d -links 2 -path '*/CDE/*'
目前路徑名使用模式匹配表示法中描述的模式匹配表示法匹配模式。
在“模式匹配表示法”中,星號匹配任何字元串。
最後一點,
-ok
或-exec
存在,否則預設使用,因此您可以刪除它。