linux/unix find命令

xiexingzhi發表於2012-09-05
1.1  命令選項
-name :照檔名查詢檔案。
-perm:照檔案許可權來查詢檔案。
-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小時被改變檔案資料的檔案

1.2  結合其他命令
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。
例如:
a. 列出當前目錄下所有檔案:
bash-2.03$ find . -type f -exec ls -l {} \;
-rwxr-xr-x   1 ismg282  aisoft      5026  1月  9 15:40 ./wangzl/aimgtrace.ismg
-rwxr-xr-x   1 ismg282  aisoft      1310  1月 10 16:07 ./wangzl/smsICP.sh
-rw-r--r--   1 ismg282  aisoft        15  5月 31 16:14 ./aa.txt
-rw-r--r--   1 ismg282  aisoft        15  5月 31 16:15 ./bb.txt
-rw-r--r--   1 ismg282  aisoft        15  5月 31 16:15 ./bak/aa.txt

b. 刪除滿足要求的目錄下的所有檔案:
find . -type d -name "LogBak" -exec rm -rf {}/* \;
find . -type d -name "BillBak" -exec rm -rf {}/* \;
find . -type d -name "BillTmpBak" -exec rm -rf {}/* \;
find . -type d -name "Data" -exec rm -fr {}/* \;
find . -type d -name "Trap" -exec rm -fr {}/* \;

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

Xargs:但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是“引數列太長”或“引數列溢位”。這就是xargs命令的用處所在,特別是與find命令一起使用。例子:用grep命令在當前目錄下的所有普通檔案中搜尋hostnames這個詞:
bash-2.03$ find . -name \* -type f -print | xargs grep "test"
./aa.txt:test
./bb.txt:test
./bak/aa.txt:test

3) find
find命令是功能最強的命令之一,但同時也是命令列結構最難以掌握的命令之一。
# find / -print | wc -l 顯示系統中所有檔案和目錄的數目。
# find / -user $LOGNAME -print 顯示系統中該使用者所有檔案和目錄。
# find / -size 100 -print 顯示檔案大小為100 blocks。
# find / -size -100 -print 顯示檔案大小小於100 blocks 。
# find / -size +100 -print 顯示檔案大小大於100 blocks 。
# find / -name core -exec rm {} ;查詢並刪除core檔案。
# find . -exec chown $LOGNAME {} ; 修改一個目錄下的所有檔案的使用者所屬。
# find .-type d -exec chmod 770 {} ;修改一個目錄下的所有目錄的許可權。
# find . -ctime +3 -exec ls -l {} \; 查詢當前目錄下3天前建立的檔案並列出(ctime 建立,atime 訪問,mtime 修改)
  find /home/m_collect_b_hdc/top/ -ctime +3 -exec rm {} \;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22531473/viewspace-742726/,如需轉載,請註明出處,否則將追究法律責任。

相關文章