find查詢多種檔案字尾
阿新 • • 發佈:2019-02-09
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)$"