Linux中find命令使用

2021-09-30 15:40:10 字數 3354 閱讀 6437

find命令的一般形式為:

find pathname -options [-print -exec -ok]
引數說明如下:

pathname:find命令所查詢的目錄路徑。

-print:find命令將匹配的檔案輸出到標準輸出。

-exec:find命令對匹配的檔案執行該引數所給出的shell命令,在這之後的命令的形式為'coomand' {} \;,這裡要注意{}+空格+\;

-ok:和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。

一,name選項

該選項用於根據檔名來查詢。

在查詢過程中需要用引號將檔名模式引起來,也就是說在檔名的部分是可以用模式串來匹配的,如

在當前目錄下,查詢檔案名以乙個大寫字母開頭的檔案,可以用如下命令查詢:

find ./ -name "[a-z]*" -print

二,perm選項

該選項按照檔案許可權模式來查詢檔案,使用-perm選項。

如在當前目錄下查詢檔案許可權為644的檔案,可以用:

find ./ -perm 644 -print

find ./ -perm 644 -print

三,nouser和user選項

這兩個選項用於按照檔案屬主查詢檔案,在命令中可以給出相應的使用者名稱。例如在當前目錄下查詢屬於xinyu的檔案。

find ./ -user xinyu -print
為了查詢那些賬戶已經被刪除的使用者的檔案,可以用-nouser選項,這個選項不用使用者名稱引數,如

find ./ -nouser -print

與這兩個選項相對應的另外兩個用於組屬主查詢的選項是:group和nogroup,其用法和user,nouser一樣。

四,mtime選項

這個選項是按照檔案的更改時間來查詢檔案,在我們做一些資料備份的時候,可能經常要刪除幾天以前的備份,只留下最近幾天的備份,這時這個選項就有用了,或者說我們想刪除好些個月以前的檔案。這個選項可以用於查詢n天以前的檔案,或者是n天以內的檔案,用+號和-號,這兩個符號來限定,不用說就知道-號表示多少天以內,+號表示多少天以前了。

find ./ -mtime -6 -print 6天以內的檔案

find ./ -mtime +6 print 6天以前的檔案

五,newer選項

有時我們並不想指定確定的多少天以前或者多少天以內,我們想查詢哪些檔案比某個指定的檔案更新,或者哪些檔案比某個指定的檔案更舊。比如我們想查詢比"mod_hash.c"更新的檔案。

find ./ -newer mod_hash.c -print

可以用 ! -newer表示不比某個檔案更新。

六,type選項

在linux系統中有很多中不同的檔案型別,如:

d:表示 目錄。

c:表示字元裝置檔案。

b:表示塊裝置檔案。

p:表示管道檔案。

l:表示符號連線檔案。

,還有s網路檔案等,比如我們想在當前目錄下查詢所有的符號連線檔案,可以用

find ./ -type l -print
想找所有的目錄檔案

find ./ -type d -print

七,size選項

一看這個選項就知道,這個選項是根據檔案的大小來查詢檔案的。但要注意的是,這個選項可以根據塊或者是位元組來查詢檔案,乙個塊是按512位元組來算的,預設是以塊為單位的,如果要按位元組查詢,只要在後面加c就可以,如

find ./ -size +10 -print  當前目錄下查詢檔案長度超過10個塊的檔案。

fiind ./ -size 1024c -print 當前目錄下查詢檔案的長度為1024位元組的檔案

八,prune選項

在介紹這個選項之前,先要熟悉另外兩個選項的用法-path,-a或者是-o,在不用prune選項時,path選項可以指定在路徑下的哪個目錄下查詢。如:

find ./ -path 'apache' -name *.conf
表示在當前目錄下的apache目錄裡查詢字尾為conf的配置檔案。

-o表示or的意思,就是會對其左邊的命令返回進行求真,如果是匹配,就會進行後面的命令選項運算。如-path ./apache -prune -o -print ,表示如果左邊匹配的不是./apache目錄,就會呼叫-print進行輸出。-a是表示and的意思,下面區別他們的意思:

find . -path ./apache -prune -o -print   顯示除./apache目錄之外的所有檔案

find . -path ./apache -prune -a -print 只顯示當前目錄下的./apache目錄

該選項用於在查詢過程忽略某個目錄,這個選項的使用比之前的選項都要講究一些。這個選項就像乙個判斷我們的一樣,後面接-o表示選擇,如果查詢的目錄是被忽略的,就不會輸出。

在使用prune選項的時候,用-path 以指定要忽略的路徑,另外要注意以下幾個問題:

-path指定路徑,如要忽略當前目錄下的apache目錄:-path ./apache -prune -o -print ,-o可以表示乙個選擇前面的是否匹配。

用-path時,不能用 ./apache/ ,而是./apache。

九,depth選項

該選項用於控制find的行為,增加這個選項之後,find命令會先匹配所有的檔案,然後再進入子目錄中查詢。

十,mount選項

該選項表示find命令只在當前的檔案系統中查詢檔案,不進入其他檔案系統,我們知道在linux系統中,可以將乙個檔案系統掛載到當前檔案乙個目錄接點上。

十一,exec和ok選項

這兩個選項可以在find命令匹配到一些檔案之後,對其匹配的檔案進行某些操作,這時可以使用-exec選項,比如我們想用ls -l命令列出所匹配到的檔案:

find ./ -type l -exec ls -l {} \;
注意這個exec選項後面的格式,再如我們刪除乙個星期以前的日誌檔案。

find ./logs -type f -mtime +7 -exec rm {} \;

在實際應用過程中,exec選項還是用的比較多的,再次提示注意{}和\;之間的空格。

linux中find命令使用

find pathname options print exec ok pathname 表示find命令查詢的路徑 option 表示find命令按各種規則來查詢,這裡規則很多,如按 name 命名 user 使用者名稱 perm 許可權 等等。type 目標型別,如檔案f,目錄d等 print ...

linux中find命令的使用

今天乙個很偶然的機會看到了linux中的find命令,然後我在網上搜尋了一下這方面的內容,為了方便大家學習參考,我就總結一下,一上午的勞動成果,呵呵!首先是find的語法 find 起始目錄 尋找條件 操作 還有種表述方式 find path option exec command 因為find命令...

linux中Find命令的使用

首先是find的語法 find 起始目錄 尋找條件 操作 還有種表述方式 find path option exec command 因為find命令會根據我們給的option,也就是尋找條件從我們給出的目錄開始對其中檔案及其下子目錄中的檔案進行遞迴搜尋,所以我覺的這個地方說是 起始目錄 是非常好的...