find命令用於尋找,功能很強大,格式如下:
find pathname -options [-print -exec -ok ...]
pathname: find命令所尋找的目錄路徑。例如用.來表示目前的目錄,用/來表示系統根目錄。-print: find命令將匹配的檔案輸出到標準輸出。-exec: find命令對匹配的檔案執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。
命令選項很多,常用如下:
-name按照檔案名稱尋找檔案。-perm按照檔案許可權來尋找檔案。-prune使用這一選項可以使find命令不在當前指定的目錄中尋找,如果同時使用-depth選項,那麼-prune將被find命令忽略。-user按照檔案屬主來尋找檔案。-group按照檔案所屬的組來尋找檔案。-mtime -n +n按照檔案的更改時間來尋找檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。-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點。-follow:如果find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案。-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。-amin n
尋找系統中最後N分鐘訪問的檔案
-atime n
尋找系統中最後n*24小時訪問的檔案
-cmin n
尋找系統中最後N分鐘被改變檔案狀態的檔案
-ctime n
尋找系統中最後n*24小時被改變檔案狀態的檔案
-mmin n
尋找系統中最後N分鐘被改變檔案資料的檔案
-mtime n
尋找系統中最後n*24小時被改變檔案資料的檔案
一個find命令shell指令碼小例子如下,尋找目前的目錄下某個字串(通過參數形式傳入指令碼):
#!/bin/shfor afile in `find ./ -name "*"`; do #echo $afile; if [ -f "$afile" ]; then wordnum=`cat $afile|grep $1 |wc -l`; if [ "$wordnum" -ge 2 ]; then echo $afile; fi fidone
假如shell指令碼命名find_word.sh,同時賦予目前使用者可執行許可權,執行如下命令:
[@131.169 test]# find_word.sh ni
尋找含有 ni 的檔案