1. 程式人生 > >find查詢多種檔案字尾

find查詢多種檔案字尾

find命令最常用的是查詢某個檔案,如:

find ./ -name "abc.txt"

則會在當前目錄及子目錄下查詢abc.txt檔案

更常用的是查詢某一型別的檔案,如:

find ./ -name "*.txt"

則會在當前目錄及子目錄下查詢所有txt檔案,但是如果要查詢多種檔案型別呢?比如某資料夾下面所有.c檔案和.h檔案,可以這樣做:

find ./ -name "*.[ch]"

這個方法有很大的侷限性,只對單個字元結尾的檔案有效,因為引號裡面的是萬用字元,所以多個多字元結尾的檔案只能用正則表示式來查詢:

find ./ -regex ".*\.java\|.*\.xml"

上面這條命令會查詢當前資料夾下面的所有java檔案和xml檔案,find預設採用emacs正則,會比較羅嗦,如果採用posix-extended正則會比較簡單,如下:

find ./ -regextype posix-extended -regex ".*\.(java|xml)"

當然,如果不需要查詢大量字尾,最簡單的方式是使用-o選項,優點是比較好記:

find ./ -name "*.java" -o -name "*.xml"

還有比較低效的方法,查找出所有檔案再過濾:

find ./ -type f | egrep "\.(java|xml)$"