Linux常用命令(find)

2021-10-05 13:57:35 字數 2995 閱讀 4611

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...