天天看點

find和xargs

find指令行選擇

-name  按照檔案名查找檔案

-perm   按照檔案權限查找檔案

-prune  忽略目錄

-user    按照檔案屬主查找

-group   按照檔案所屬的組來查找檔案

-mtime -n +n  按照檔案的更改時間來查找檔案,-n表示檔案更改時間距現在n天以内,+n表示檔案更改時間距現在n天以前

-nogroup    查找無有效屬組的檔案、即該檔案所屬的組在/etc/groups中不存在

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

-newfile file1 ! file2  查找更改時間比檔案file1新但比檔案file2舊的檔案

-type      查找某一類型的檔案,諸如:

b       塊裝置檔案

d       目錄

c        字元裝置檔案

p        管道檔案

l         符号連結檔案

f         普通檔案

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

-depth         在查找檔案是,首先查找目前目錄隻的檔案,然後再在其子目錄中查找

-fstype        查找位于某一類型檔案系統中的檔案,這些檔案系統類型通常可以在配置檔案/etc/fstab中找到

-mount       在查找檔案時不跨越檔案系統mount點

-follow        如果find指令遇到符号連結檔案,就跟蹤至連結所指向的檔案

-cpio           對比對的檔案使用cpio指令,将這些檔案備份到錄音帶裝置中。

在$HOME目錄下查找txt檔案并列印

find ~ -name "*.txt" -print

在目前目錄下查找txt檔案并列印

find . -name "*.txt" -print

在/apps目錄下查找檔案,但不在/apps/bin目錄下查找

find /apps -name "/apps/bin" -prune -o -print

查找$HOME目錄下使用者dave的檔案

find ~ -user dave -print

查找主賬戶被删除的檔案

find /home -nouser -print

在目前目錄下查找檔案權限為755的檔案

find . -perm 755 -print

查找目前目錄下檔案名以兩個小寫字母開頭,跟着是兩個數字,最後是*.txt的檔案

find . -name "[a-z][a-z][0--9][0--9].txt" -print

在目前目錄下查找檔案長度大于1M位元組的檔案

find . -size +1000000c -print

使用exec或ok來執行shell指令

用ls -l指令列出比對到的檔案,可以把ls -l指令放在find指令的-exec選項中

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

在/logs目錄中查找更改時間在5日以前的檔案并删除它們,可以用:

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

在目前目錄中查找LOG檔案并删除它們,并給出是否删除的提示

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

查找目前檔案系統中的所有目錄并陪需

find . -type d -print -local -mount | sort

xargs指令

查找系統中的每一個普通檔案,并用xargs指令來測試它們分别屬于哪類檔案:

find / -type f -print | xargs file

下面的例子在/apps/audit目錄下查找所有使用者具有讀、寫和執行權限的檔案,并回收相應的寫權限

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

在下面的例子中,我們用grep指令在目前目錄下的所有普通檔案中搜尋DBO這個詞:

find . -name \ * -type f -print | xargs grep "DBO"

繼續閱讀