shell指令碼之find

2021-06-10 05:06:21 字數 2789 閱讀 4396

find pathname -options [-print -exec -ok]

引數pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。

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

-exec:     find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' {} \;,注意和\;之間的空格。

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

find命令選項

-name:按照檔名查詢檔案。

-perm:按照檔案許可權來查詢檔案。

-prune:使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命令忽略。

-user: 按照檔案屬主來查詢檔案。

-group:按照檔案所屬的組來查詢檔案。

-mtime -n +n:按照檔案的更改時間來查詢檔案, - n表示檔案更改時間距現在n天以內,+n表示檔案更改時間距現在n天以前。find命令還有-atime和-ctime選項,但它們都和-mtime選項。

-nogroup:查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。

-nouser:查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。

-newer file1 ! file2:查詢更改時間比檔案file1新但比檔案file2舊的檔案

-type 查詢某一型別的檔案

b - 塊裝置檔案。

d - 目錄。

c - 字元裝置檔案。

p - 管道檔案。

l - 符號鏈結檔案。

f - 普通檔案

-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。

-depth:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢。

-fstype:查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了本系統中有關檔案系統的資訊

-mount:在查詢檔案時不跨越檔案系統mount點。

-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中

find

當前目錄及子目錄中查詢檔案名以乙個大寫字母開頭的檔案

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

在/etc目錄中查詢檔案名以host開頭的檔案

find /etc -name "host*" -print

exec

find命令將所有匹配到的檔案一起傳遞給exec執行

有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤

xargs命令每次只獲取一部分檔案而不是全部

匹配當前目錄下的所有普通檔案

find . -type f -exec ls -l {} \;

在/ logs目錄中查詢更改時間在5日以前的檔案並刪除它們

find logs -type f -mtime +5 -exec rm {} \;

在當前目錄中查詢所有檔名以.log結尾、更改時間在5日以上的檔案,並刪除它們,在刪除之前先給出提示

find . -name "*.log" -mtime +5 -ok rm {} \;

首先匹配所有檔名為「 passwd*」的檔案,然後執行grep命令檢視這些檔案中是否存在乙個sam使用者

find /etc -name "passwd*" -exec grep "sam" {} \;

查詢當前使用者主目錄下的所有檔案

find $home -print

find ~ -print

在當前目錄中檔案屬主具有讀、寫許可權,並且檔案所屬組的使用者和其他使用者具有讀許可權的檔案

find . -type f -perm 644 -exec ls -l {} \;

查詢系統中所有檔案長度為0的普通檔案,並列出它們的完整路徑

find / -type f -size 0 -exec ls -l {} \;

查詢系統中所有屬於root組的檔案

find . -group root -exec ls -l {} \;

查詢當前目錄中的所有目錄並排序

find . -type d |sort

xargs

前面的輸出轉換為後方指令的引數輸入

使用exec和xargs可以使使用者對所匹配到的檔案執行幾乎所有的命令。

查詢系統中的每乙個普通檔案,然後使用xargs命令測試它們分別屬於哪類檔案

find . -type f -print | xargs file

在整個系統中查詢記憶體資訊轉儲檔案(core dump) ,然後把結果儲存到/tmp/core.log 檔案中

find / -name "core" -print | xargs echo "" >/tmp/core.log

在當前目錄下查詢所有使用者具有讀、寫和執行許可權的檔案,並收回相應的寫許可權

find . -perm -7 -print | xargs chmod o-w

用grep命令在所有的普通檔案中搜尋hostname這個詞

find . -type f -print | xargs grep "hostname"

統計當前目錄下所有檔案的大小,含子目錄,精確到位元組

find ./ -type f | xargs ls -l | awk 'begin;end'

shell指令碼 find命令

find命令用於查詢,功能很強大,格式如下 find pathname options print exec ok pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執行...

Shell指令碼四 find

3 使用exec或ok來執行shell命令 4 find命令結合exec,ok的例子 5 find命令結合xargs的例子 find pathname options print exec ok 引數說明 pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄,...

Shell指令碼學習筆記 find

find pathname options print exec ok pathname find命令所查詢的目錄路徑。options 選項。print find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為 command ok 和exec的作用相同,只不過以一種更為安全的模式...