一、find介紹
1. find . -iname "*.txt"查找當前目錄下各個文件夾下的txt屬性的文件(i忽略大小寫)。
2.find . -type f 查找當前目錄下各個文件夾下的文件
3.find . -type d 查找當前目錄下各個文件夾下的目錄
4.find . -type f | xargs grep -ain -E "匹配字段" --colo=auto
?grep參數介紹-a
選項:以文本文件的形式處理二進制文件,-i
選項:讓搜索忽略大小寫,-n
選項:在輸出結果時,顯示匹配行的行號,-E正則匹配,--colo=auto匹配結果自帶顏色。
5.find -L ./ -path?./qt-creator-opensource-src-12.0.0/bin -prune -o -path ./qt-creator-opensource-src-12.0.0/coin -prune? -o -type f| xargs grep -ain -E "chen3feng" --color=auto
執行命令所在目錄有目錄qt-creator-opensource-src-12.0.0。
-path?./qt-creator-opensource-src-12.0.0/bin -prune
path
選項用于匹配文件路徑,./qt-creator-opensource-src-12.0.0/bin -prune 就是要匹配的路徑模式。這意味著只要遇到路徑是 ./qt-creator-opensource-src-12.0.0/bin -prune 的目錄,find
就會停止對它及其子目錄的搜索。-prune
選項是告訴find
命令,對匹配-path
條件的目錄不要進行遍歷,也就是 “修剪” 掉這部分目錄樹,避免在指定目錄及其子目錄中繼續查找,以此提高查找效率。在這個例子里,./qt-creator-opensource-src-12.0.0/bin -prune 目錄及其內部的所有文件和子目錄都會被跳過
-o
:這是一個邏輯運算符,代表 “或(or)” 的關系,連接前后兩個查找條件
-path ./qt-creator-opensource-src-12.0.0/coin -prune
同之前的命令一樣含義。
-type f
:-type
用于指定查找文件的類型,f
表示普通文件(file),也就是查找除了被 -prune
修剪掉的./qt-creator-opensource-src-12.0.0/bin 和 ./qt-creator-opensource-src-12.0.0/coin目錄及其子目錄之外的所有普通文件。
整體目錄結構如下圖:
6.find . -type f? \( -name "*json" -o -iname "*lists.txt" \) | xargs grep -ain "匹配項"
find
命令用于在當前目錄(.
)及其子目錄下查找特定類型的文件并進行grep匹配。
- 括號:括號
\(`和`\)
用于將多個條件組合在一起,讓它們作為一個整體來處理,形成更復雜的邏輯判斷。因為括號在 shell 中有特殊意義,所以需要用反斜杠\
轉義,使其被當作普通字符傳遞給find
命令。 -name "*json"
:-name
選項用于按文件名精確匹配,*
是通配符,代表任意字符序列,所以*json
會匹配所有以.json
為后綴的文件名。-o
:這是邏輯運算符 “或(or)”,連接前后兩個文件名匹配條件。-iname "*lists.txt"
:-iname
選項與-name
類似,也是匹配文件名,但-iname
是忽略大小寫的,所以它會匹配所有名字是*lists.txt
的文件,無論大小寫如何