這會用到linux下的find命令:
一.先介紹兩個簡單例子
查詢當前目錄下 名為 test.log的檔案 可以使用:find . -name test.log
查詢當前目錄下 名結尾是 .log的檔案 可以使用:find . -name *.log”
二.我們來研究一下find命令的使用
語法: find(選項)(引數)
可以支援的選項:
-amin<分鐘>:查詢在指定時間曾被存取過的檔案或目錄,單位以分鐘計算;
-anewer<參考檔案或目錄>:查詢其存取時間較指定檔案或目錄的存取時間更接近現在的檔案或目錄;
-atime<24小時數>:查詢在指定時間曾被存取過的檔案或目錄,單位以24小時計算;
-cmin<分鐘>:查詢在指定時間之時被更改過的檔案或目錄;
-cnewer<參考檔案或目錄>查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄;
-ctime<24小時數>:查詢在指定時間之時被更改的檔案或目錄,單位以24小時計算;
-daystart:從本日開始計算時間;
-depth:從指定目錄下最深層的子目錄開始查詢;
-expty:尋找檔案大小為0 Byte的檔案,或目錄下沒有任何子目錄或檔案的空目錄;
-exec<執行指令>:假設find指令的回傳值為True,就執行該指令;
-false:將find指令的回傳值皆設為False;
-fls<列表檔案>:此引數的效果和指定“-ls”引數類似,但會把結果儲存為指定的列表檔案;
-follow:排除符號連線;
-fprint<列表檔案>:此引數的效果和指定“-print”引數類似,但會把結果儲存成指定的列表檔案;
-fprint0<列表檔案>:此引數的效果和指定“-print0”引數類似,但會把結果儲存成指定的列表檔案;
-fprintf<列表檔案><輸出格式>:此引數的效果和指定“-printf”引數類似,但會把結果儲存成指定的列表檔案;
-fstype<檔案系統型別>:只尋找該檔案系統型別下的檔案或目錄;
-gid<群組識別碼>:查詢符合指定之群組識別碼的檔案或目錄;
-group<群組名稱>:查詢符合指定之群組名稱的檔案或目錄;
-help或——help:線上幫助;
-ilname<範本樣式>:此引數的效果和指定“-lname”引數類似,但忽略字元大小寫的差別;
-iname<範本樣式>:此引數的效果和指定“-name”引數類似,但忽略字元大小寫的差別;
-inum<inode編號>:查詢符合指定的inode編號的檔案或目錄;
-ipath<範本樣式>:此引數的效果和指定“-path”引數類似,但忽略字元大小寫的差別;
-iregex<範本樣式>:此引數的效果和指定“-regexe”引數類似,但忽略字元大小寫的差別;
-links<連線數目>:查詢符合指定的硬連線數目的檔案或目錄;
-iname<範本樣式>:指定字串作為尋找符號連線的範本樣式;
-ls:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出;
-maxdepth<目錄層級>:設定最大目錄層級;
-mindepth<目錄層級>:設定最小目錄層級;
-mmin<分鐘>:查詢在指定時間曾被更改過的檔案或目錄,單位以分鐘計算;
-mount:此引數的效果和指定“-xdev”相同;
-mtime<24小時數>:查詢在指定時間曾被更改過的檔案或目錄,單位以24小時計算;
-name<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式;
-newer<參考檔案或目錄>:查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄;
-nogroup:找出不屬於本地主機群組識別碼的檔案或目錄;
-noleaf:不去考慮目錄至少需擁有兩個硬連線存在;
-nouser:找出不屬於本地主機使用者識別碼的檔案或目錄;
-ok<執行指令>:此引數的效果和指定“-exec”類似,但在執行指令之前會先詢問使用者,若回答“y”或“Y”,則放棄執行命令;
-path<範本樣式>:指定字串作為尋找目錄的範本樣式;
-perm<許可權數值>:查詢符合指定的許可權數值的檔案或目錄;
-print:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字串;
-print0:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式可以自行指定;
-prune:不尋找字串作為尋找檔案或目錄的範本樣式;
-regex<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式;
-size<檔案大小>:查詢符合指定的檔案大小的檔案;
-true:將find指令的回傳值皆設為True;
-typ<檔案型別>:只尋找符合指定的檔案型別的檔案;
-uid<使用者識別碼>:查詢符合指定的使用者識別碼的檔案或目錄;
-used<日數>:查詢檔案或目錄被更改之後在指定時間曾被存取過的檔案或目錄,單位以日計算;
-user<擁有者名稱>:查詢符和指定的擁有者名稱的檔案或目錄;
-version或——version:顯示版本資訊;
-xdev:將範圍侷限在先行的檔案系統中;
-xtype<檔案型別>:此引數的效果和指定“-type”引數類似,差別在於它針對符號連線檢查。
引數: 起始目錄:查詢檔案的起始目錄。
三.選幾個選項引數來實戰一下:
3.1.在/home目錄下查詢以.txt結尾的檔名 : find /home -name "*.txt"
3.2. 同上,但忽略大小寫: find /home -iname "*.txt”
3.3.當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案: find . -name "*.txt" -o -name "*.pdf”
3.4.基於正則表示式匹配檔案路徑: find . -regex ".*\(\.txt\|\.pdf\)$”
3.5.基於目錄深度搜索,向下最大深度限制為3: find . -maxdepth 3 -type f
3.6.根據檔案時間戳進行搜尋,搜尋最近七天內被訪問過的所有檔案: find . -type f -atime -7
3.7.根據檔案大小進行匹配,搜尋大於10KB的檔案: find . -type f -size +10k
3.8.藉助-exec選項與其他命令結合使用,查詢當前目錄下所有.txt檔案並把他們拼接起來寫入到all.txt檔案中: find . -type f -name "*.txt" -exec cat {} \;> all.txt
文章最後分享三本相關書籍
這會用到linux下的find命令:
一.先介紹兩個簡單例子
查詢當前目錄下 名為 test.log的檔案 可以使用:find . -name test.log
查詢當前目錄下 名結尾是 .log的檔案 可以使用:find . -name *.log”
二.我們來研究一下find命令的使用
語法: find(選項)(引數)
可以支援的選項:
-amin<分鐘>:查詢在指定時間曾被存取過的檔案或目錄,單位以分鐘計算;
-anewer<參考檔案或目錄>:查詢其存取時間較指定檔案或目錄的存取時間更接近現在的檔案或目錄;
-atime<24小時數>:查詢在指定時間曾被存取過的檔案或目錄,單位以24小時計算;
-cmin<分鐘>:查詢在指定時間之時被更改過的檔案或目錄;
-cnewer<參考檔案或目錄>查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄;
-ctime<24小時數>:查詢在指定時間之時被更改的檔案或目錄,單位以24小時計算;
-daystart:從本日開始計算時間;
-depth:從指定目錄下最深層的子目錄開始查詢;
-expty:尋找檔案大小為0 Byte的檔案,或目錄下沒有任何子目錄或檔案的空目錄;
-exec<執行指令>:假設find指令的回傳值為True,就執行該指令;
-false:將find指令的回傳值皆設為False;
-fls<列表檔案>:此引數的效果和指定“-ls”引數類似,但會把結果儲存為指定的列表檔案;
-follow:排除符號連線;
-fprint<列表檔案>:此引數的效果和指定“-print”引數類似,但會把結果儲存成指定的列表檔案;
-fprint0<列表檔案>:此引數的效果和指定“-print0”引數類似,但會把結果儲存成指定的列表檔案;
-fprintf<列表檔案><輸出格式>:此引數的效果和指定“-printf”引數類似,但會把結果儲存成指定的列表檔案;
-fstype<檔案系統型別>:只尋找該檔案系統型別下的檔案或目錄;
-gid<群組識別碼>:查詢符合指定之群組識別碼的檔案或目錄;
-group<群組名稱>:查詢符合指定之群組名稱的檔案或目錄;
-help或——help:線上幫助;
-ilname<範本樣式>:此引數的效果和指定“-lname”引數類似,但忽略字元大小寫的差別;
-iname<範本樣式>:此引數的效果和指定“-name”引數類似,但忽略字元大小寫的差別;
-inum<inode編號>:查詢符合指定的inode編號的檔案或目錄;
-ipath<範本樣式>:此引數的效果和指定“-path”引數類似,但忽略字元大小寫的差別;
-iregex<範本樣式>:此引數的效果和指定“-regexe”引數類似,但忽略字元大小寫的差別;
-links<連線數目>:查詢符合指定的硬連線數目的檔案或目錄;
-iname<範本樣式>:指定字串作為尋找符號連線的範本樣式;
-ls:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出;
-maxdepth<目錄層級>:設定最大目錄層級;
-mindepth<目錄層級>:設定最小目錄層級;
-mmin<分鐘>:查詢在指定時間曾被更改過的檔案或目錄,單位以分鐘計算;
-mount:此引數的效果和指定“-xdev”相同;
-mtime<24小時數>:查詢在指定時間曾被更改過的檔案或目錄,單位以24小時計算;
-name<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式;
-newer<參考檔案或目錄>:查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄;
-nogroup:找出不屬於本地主機群組識別碼的檔案或目錄;
-noleaf:不去考慮目錄至少需擁有兩個硬連線存在;
-nouser:找出不屬於本地主機使用者識別碼的檔案或目錄;
-ok<執行指令>:此引數的效果和指定“-exec”類似,但在執行指令之前會先詢問使用者,若回答“y”或“Y”,則放棄執行命令;
-path<範本樣式>:指定字串作為尋找目錄的範本樣式;
-perm<許可權數值>:查詢符合指定的許可權數值的檔案或目錄;
-print:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字串;
-print0:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式可以自行指定;
-prune:不尋找字串作為尋找檔案或目錄的範本樣式;
-regex<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式;
-size<檔案大小>:查詢符合指定的檔案大小的檔案;
-true:將find指令的回傳值皆設為True;
-typ<檔案型別>:只尋找符合指定的檔案型別的檔案;
-uid<使用者識別碼>:查詢符合指定的使用者識別碼的檔案或目錄;
-used<日數>:查詢檔案或目錄被更改之後在指定時間曾被存取過的檔案或目錄,單位以日計算;
-user<擁有者名稱>:查詢符和指定的擁有者名稱的檔案或目錄;
-version或——version:顯示版本資訊;
-xdev:將範圍侷限在先行的檔案系統中;
-xtype<檔案型別>:此引數的效果和指定“-type”引數類似,差別在於它針對符號連線檢查。
引數: 起始目錄:查詢檔案的起始目錄。
三.選幾個選項引數來實戰一下:
3.1.在/home目錄下查詢以.txt結尾的檔名 : find /home -name "*.txt"
3.2. 同上,但忽略大小寫: find /home -iname "*.txt”
3.3.當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案: find . -name "*.txt" -o -name "*.pdf”
3.4.基於正則表示式匹配檔案路徑: find . -regex ".*\(\.txt\|\.pdf\)$”
3.5.基於目錄深度搜索,向下最大深度限制為3: find . -maxdepth 3 -type f
3.6.根據檔案時間戳進行搜尋,搜尋最近七天內被訪問過的所有檔案: find . -type f -atime -7
3.7.根據檔案大小進行匹配,搜尋大於10KB的檔案: find . -type f -size +10k
3.8.藉助-exec選項與其他命令結合使用,查詢當前目錄下所有.txt檔案並把他們拼接起來寫入到all.txt檔案中: find . -type f -name "*.txt" -exec cat {} \;> all.txt
文章最後分享三本相關書籍