find 命令
用於在檔案樹中查詢檔案,並作出相應的處理。
命令格式:
find pathname -options [-print -exec -ok …]
命令引數:
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為』command』 ;,注意和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。
命令選項:
-name 按照檔名查詢檔案
-perm 按檔案許可權查詢檔案
-user 按檔案屬主查詢檔案
-group 按照檔案所屬的組來查詢檔案。
-type 查詢某一型別的檔案,諸如:
b - 塊裝置檔案
d - 目錄
c - 字元裝置檔案
l - 符號鏈結檔案
p - 管道檔案
f - 普通檔案
-size n :[c] 查詢檔案長度為n塊檔案,帶有c時表檔案位元組大小
-amin n 查詢系統中最後n分鐘訪問的檔案
-atime n 查詢系統中最後n24小時訪問的檔案
-cmin n 查詢系統中最後n分鐘被改變檔案狀態的檔案
-ctime n 查詢系統中最後n24小時被改變檔案狀態的檔案
-mmin n 查詢系統中最後n分鐘被改變檔案資料的檔案
-mtime n 查詢系統中最後n24小時被改變檔案資料的檔案
(用減號-來限定更改時間在距今n日以內的檔案,而用加號+來限定更改時間在距今n日以前的檔案。 )
-maxdepth n 最大查詢目錄深度
-prune 選項來指出需要忽略的目錄。在使用-prune選項時要當心,因為如果你同時使用了-depth選項,那麼-prune選項就會被find命令忽略
-newer 如果希望查詢更改時間比某個檔案新但比另乙個檔案舊的所有檔案,可以使用-newer選項
例項:(1)查詢 48 小時內修改過的檔案
find -atime -2
(2)在當前目錄查詢 以 .log 結尾的檔案。 . 代表當前目錄
find ./ -name '.log』
(3)查詢 /opt 目錄下 許可權為 777 的檔案
find /opt -perm 777
(4)查詢大於 1k 的檔案
find -size +1000c
查詢等於 1000 字元的檔案
find -size 1000c
-exec 引數後面跟的是 command 命令,它的終止是以 ; 為結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜槓。{} 花括號代表前面find查詢出來的檔名。
例項:(5)在當前目錄中查詢更改時間在10日以前的檔案並刪除它們(無提醒)
find . -type f -mtime +10 -exec rm -f {} ;
(6)當前目錄中查詢所有檔名以.log結尾、更改時間在5日以上的檔案,並刪除它們,只不過在刪除之前先給出提示。 按y鍵刪除檔案,按n鍵不刪除
find . -name 『.log』 mtime +5 -ok -exec rm {} ;
(7)當前目錄下查詢檔案名以 passwd 開頭,內容包含 「pkg」 字元的檔案
find . -f -name 'passwd』 -exec grep 「pkg」 {} ;
(8)用 exec 選項執行 cp 命令
find . -name '.log』 -exec cp {} test3 ;
-xargs find 命令把匹配到的檔案傳遞給 xargs 命令,而 xargs 命令每次只獲取一部分檔案而不是全部,不像 -exec 選項那樣。這樣它可以先處理最先獲取的一部分檔案,然後是下一批,並如此繼續下去。
例項:(9)查詢當前目錄下每個普通檔案,然後使用 xargs 來判斷檔案型別
find . -type f -print | xargs file
(10)查詢當前目錄下所有以 js 結尾的並且其中包含 『editor』 字元的普通檔案
find . -type f -name ".js" -exec grep -lf 『ueditor』 {} ;
find -type f -name '.js』 | xargs grep -lf 『editor』
(11)利用 xargs 執行 mv 命令
find . -name ".log" | xargs -i mv {} test4
(12)用 grep 命令在當前目錄下的所有普通檔案中搜尋 hostnames 這個詞,並標出所在行:
find . -name *(轉義) -type f -print | xargs grep -n 『hostnames』
(13)查詢當前目錄中以乙個小寫字母開頭,最後是 4 到 9 加上 .log 結束的檔案:
find . -name 『[a-z]*[4-9].log』 -print
(14)在 test 目錄查詢不在 test4 子目錄查詢
find test -path 『test/test4』 -prune -o -print
(15)例項1:查詢更改時間比檔案 log2012.log新但比檔案 log2017.log 舊的檔案
find -newer log2012.log ! -newer log2017.log
使用 depth 選項:
depth 選項可以使 find 命令向磁帶上備份檔案系統時,希望首先備份所有的檔案,其次再備份子目錄中的檔案。
例項:find 命令從檔案系統的根目錄開始,查詢乙個名為 con.file 的檔案。 它將首先匹配所有的檔案然後再進入子目錄中查詢
find / -name 「con.file」 -depth -print
Linux常用命令 find
名稱 find 用法 find 使用說明 將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱 類別 時間 大小 許可權等不同資訊的組合,只有完全相符的才會被列出來。find 根據下列規則判斷 path 和 expression,在命令列上第乙個 之前的部份為 path,之後的...
linux常用命令 find
find命令釋義 在某個目錄及其子目錄下查詢檔案,可以根據檔名 更改時間 檔案許可權 檔案型別 所屬使用者組等條件查詢檔案。注意 不帶引數時為只在當前目錄下查詢 find命令使用格式 首先來看看man find裡列出的格式 find h l p d debugopts 0level path.exp...
Linux常用命令 find
寫這篇部落格的原因是因為在牛客上做到的一道題難到了我,題目如下 查詢該目錄及子目錄下所有的以 conf為字尾的檔案 a find name conf b find name quto conf quto c find type d rgrep quto conf quto d find regext...