1.按名稱查找:-name
1.1 確定文件名:find 【目錄】 -name 【文件名】
舉🌰:在當前目錄及其子目錄下查找test.txt文件:find ./ -name test.txt
1.2 文件名模糊查找
舉🌰:在當前目錄及其子目錄下查找以test開頭的文件:find ./ -name "test*"。注意: 一定要加引號,https://blog.csdn.net/wgl307293845/article/details/109616467
2.按照類型查找:-type
2.1 文件f
舉🌰:查找當前目錄的所有文件:find ./ -maxdepth 1 -type f
2.2 目錄d
舉🌰:查找當前目錄的所有目錄:find ./ -maxdepth 1 -type d
3.指定目錄層次:-maxdepth -mindepth
3.1 舉🌰,只在當前目錄查找:find ./ -maxdepth 1 -name "test*"
3.2 舉🌰,在當前目錄的第二層和第三層目錄查找:find ./ -mindepth 2 -maxdepth 3 -name "test*"
3.3 舉🌰,在當前目錄和下一層目錄查詢:find ./ -maxdepth 2 -name "test*"
4.按照文件擁有者、擁有組查找:-user -group
4.1 擁有者(前面的)
舉🌰:查找當前以及子目錄用戶是的root所有文件:find ./ -user root
4.2 擁有組(后面的)
舉🌰:查找當前以及子目錄用戶是root的所有文件:find ./ -group root
5.多個條件查找:-a 與;-o 或;-not 非
5.1 舉🌰,在當前及子目錄查找用戶是xiaoqiang,用戶組是root的文件:find ./ -type f -a -user xiaoqiang -a -group root 。注意:-a 可省略,默認是且的關系
5.2 舉🌰,在當前目錄查找用戶是xiaoqiang或是root的文件:find ./ -maxdepth 1 -type f -user xiaoqiang -o -user root 。 注意:當有多個條件時,-maxdepth放在最前面,-type/-name 次之,然后是其他條件
6.按文件大小查找:-size
6.1. 20M表示大小正好是20M;-20M表示小於20M;+20M表示大於20M
舉🌰:在當前及子目錄中查詢小於20M的文件:find ./ -size -20M
7.按照修改時間查找: -cmin
7.1 1表示修改時間為1min的文件,-1表示在1min之內修改的文件,+1表示修改時間超過1min的文件;cmin中單位是分鍾,ctime單位是天
舉🌰: 在當前及子目錄中查找修改時間不超過10分鍾的文件 find ./ -type f -cmin -10
參數區別:
amin表示訪問時間,
cmin表示文件狀態被修改時間,如通過chmod修改文件屬性,cmin就會被修改
mmin表示文件內容被修改的時間。
相應的有atime、ctime、mtime
8.執行動作,對查找出來的文件執行動作:-exec command ;
8.1 主要上述命令最后有分號,分號是用來給find做標記用的,find在解析命令的時候,要區分給定的參數是要傳給自己的還是要傳給command命令的,所以find以分號作為要執行命令所有參數的結束標記;
舉🌰find ./ -maxdepth 1 -type f -group root -exec chown xiaoqiang:xiaoqiang {} \; 查找當前目錄 用戶組是root的文件,並將其用戶:用戶組修改為xiaoqiang:xiaoqiang
解釋:{} 表示find查找的結果;最后的分號表示傳給-exec commond命令參數到此結束;\ 用來轉義最后的分號,因為分號也是bash的特殊字符,所以bash會先解釋它,前面加上\就可以讓bash直接將其傳遞給find命令,使這個分號由find解釋,而不是 bash。