在 linux 命令中,find用於在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名,其支援按名稱查詢、按正規表示式查詢、按檔案大小查詢、按檔案許可權查詢等多種查詢方式。如果在使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案,並且將查詢到的子目錄和檔案全部進行顯示。
語法:find + 目標目錄(路徑) + 《選項》 + 引數
常用選項列表
選項 含義
-perm 《許可權數值》 查詢符合指定的許可權數值的檔案或目錄
-type 《檔案型別》 只尋找符合指定的檔案型別的檔案
-name 《範本樣式》 指定字串作為尋找檔案或目錄的範本樣式
-expty 尋找檔案大小為 0 byte 的檔案,或目錄下沒有任何子目錄或檔案的空目錄
-ls 假設find指令的回傳值為ture,就將檔案或目錄名稱列出到標準輸出
-maxdepth 《目錄層級》 設定最大目錄層級
-mindepth 《目錄層級》 設定最小目錄層級
-exec 《執行指令》 假設find指令的回傳值為true,就執行該指令
-ok 《執行指令》 此引數的效果和指定-exec類似,但在執行指令之前會先詢問使用者,若回答y或y,則放棄執行命令
示例首先,給出演示使用的檔案結構:
示例 1:查詢當前目錄及其子目錄下所有檔案和資料夾
find .
1示例 2:在/testlinux目錄下查詢以.txt結尾的檔名
// 需要書寫完整的路徑
find /tmp/cg/testlinux -name "*.txt"12
示例 3:組合查詢檔案名以file1開頭(與、或、非)file2開頭的檔案
/*** 組合查詢語法:
* -a 與(取交集)
* -o 或(取並集)
* -not 非(同 !)
* ! 非(同 not)
*/find . -name "file1*" -a -name "file2*"
find . -name "file1*" -o -name "file2*"
find . -name "file1*" -not -name "file2*"
find . -name "file1*" ! -name "file2*"12
3456
78910
1112
示例 4:根據檔案型別進行搜尋
/*** 查詢當前目錄及所有子目錄下的普通檔案
*/find . -type f12
345示例 5:基於目錄深度進行搜尋
/*** 限制最大深度為 3
*/find . -maxdepth 3 -type f
/*** 限制最大深度為 2
*/find . -maxdepth 2 -type f12
3456
78910
11示例 6:基於檔案許可權進行搜尋
/*** 搜尋許可權為 777 的檔案
*/find . -type f -perm 777
/*** 搜尋 .txt 格式且許可權不為 777 的檔案
*/find . -type f -name "*.txt" ! -perm 77712
3456
78910
11示例 7:借助-exec命令,將當前目錄及子目錄下所有.txt格式的檔案以file:檔名的形式列印出來
find . -type f -name "*.txt" -exec printf "file: %s\n" {} \;
1示例 8:借助-exec命令,將當前目錄及子目錄下所有 3 天前的.txt格式的檔案複製乙份到old目錄
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;
1
linux 檔案查詢 find 命令詳解
linux下檔案查詢常用命令有locate和find命令。locate命令不是實時查詢,所以查詢的結果不精確,但查詢速度很快。因為它查詢的不是目錄,而是乙個資料庫 var lib locatedb 這個資料庫中含有本地所有檔案資訊。linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用lo...
Linux檔案查詢命令及find詳解
1 locate工具 2 find工具 1 特點 1 依賴資料庫 可以用update更新資料庫,但費時長,現實企業環境最好不用 2 非實時查詢,結果非精確 3 查詢速度快 4 模糊查詢 1 特點 1 實時查詢,查詢速度慢 2 精確匹配 2 find命令格式 find options 查詢路徑 查詢條...
Linux中 find查詢命令用法詳解
linux下查詢檔案的命令有兩個,分別是locate 和 find。locate指令和find找尋檔案的功能類似,但locate是透過update程式將硬碟中的所有檔案和目錄資料先建立乙個索引資料庫,在 執行loacte時直接找該索引,查詢速度會較快,索引資料庫一般是由作業系統管理,但也可以直接下達...