find命令中選項 path和 prune的使用

2022-09-05 19:21:17 字數 1288 閱讀 7735

在windows中可以在某些路徑中查詢檔案,也可以設定不在某些路徑中查詢檔案,下面用linux中的find的命令結合其-path -prune引數來看看在linux中怎麼實現此功能。

假如在當前目錄下查詢檔案,且當前目錄下有很多檔案及目錄(多層目錄),包括dir0、dir1和dir2 ...等目錄及dir00、dir01...dir10、dir11...等子目錄。

1. 在當前目錄下查詢所有txt字尾檔案

find ./ -name "*.txt"

2.在當前目錄下的dir0目錄及子目錄下查詢txt字尾檔案

find ./ -path "./dir0*" -name "*.txt" 

3.在當前目錄下的dir0目錄下的子目錄dir00及其子目錄下查詢txt字尾檔案

find ./ -path "*dir00*" -name "*.txt"

4.在除dir0及子目錄以外的目錄下查詢txt字尾檔案

find ./ -path "./dir0*" -a -prune -o -name "*.txt" -print

說明:-a 應該是and的縮寫,意思是邏輯運算子『與』(&&); -o應該是or的縮寫,意思是邏輯運算子『或』(||), -not 表示非.

命令列的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,『與』邏輯表示式為真(即-path './dir0*' -a -prune 為真),find命令將在除這個目錄以外的目錄下查詢txt字尾檔案並列印出來;如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,『與』邏輯表示式為假,則在當前目錄下查詢所有txt字尾檔案。

5.在dir0、dir1及子目錄下查詢txt字尾檔案

find ./ \( -path "./dir0*" -o -path "./dir1*" \)  -a -name "*.txt" -print

6.在除dir0、dir1及子目錄以外的目錄下查詢txt字尾檔案

find ./ \( -path "./dir0*" -o -path "./dir1*" \) -a -prune -o -name "*.txt" -print

注意:圓括號()表示表示式的結合。即指示 shell 不對後面的字元作特殊解釋,而留給 find 命令去解釋其意義。由於命令列不能直接使用圓括號,所以需要用反斜槓'\'進行轉意(即'\'轉意字元使命令列認識圓括號)。同時注意'\(','\)'兩邊都需空格。

+1. 在所有以名為dir_general的目錄下查詢txt字尾檔案

find ./ -path "*/dir_general/*" -name "*.txt" -print

find命令中的選項解釋

find命令選項 1.name 按照檔名查詢檔案。比如 在code目錄及其子目錄下查詢file檔案,並且在當前目錄及其子目錄中查詢擴充套件名為 c 的檔案。按照檔案許可權來查詢檔案。比如 在當前目錄下查詢檔案許可權位為755的檔案,即檔案擁有者可以讀 寫 執行,所屬組和其他使用者可以讀 執行的檔案 ...

find命令和xargs命令

xargs 傳參 實時查詢檔案,查詢速度慢,精確 find 路徑 選項 檔案 引數 name 按檔名查詢 perm 按檔案許可權查詢 prune 可以使find不在當前指定目錄下查詢 user 按檔案屬主查詢 mtime 按檔案時間查詢 type b d c p l f 檔案型別,塊裝置 目錄 字元...

find命令和exec xargs 命令

將指定目錄內的所有.out檔案 cp 到 tmp 目錄 find home pirate name out exec cp tmp 其中,表示當前find查詢出來的檔名,是exec的結束符並用 轉義 如何用xargs來實現呢,用下面這個命令是不行的 find home pirate name out...