Find從英語字面上的意思譯過來是發現,找到的意思,它在linux中作為檔案查找指令也十分形象,Find雖說隻是個指令,但其功能非常強大。
好,下面來說說Find,先來說說它的基本文法格式:
find [查找路徑] [查找标準] [處理動作]
查找标準:
-name 檔案名稱查找
-iname 不區分大小寫查找
-user 根據檔案屬主查找
-group 根據檔案屬組查找
-uid 根據Uid查找
-gid 根據Gid查找
-nouser 查找沒屬主的檔案
-nogroup 查找沒屬組的檔案
組合條件:
-a 與
-o 或
!非
檔案類型:
-type
按檔案大小查找:
-size
按時間戳查找:
-atime
-mtime
-ctime
-amin
-mmin
-cmin
按權限查找:
-perm [+|-] Mode
沒有+-表示精确比對
+Mode 表示任何一類使用者的任何一位權限比對即可
-Mode 表示每類使用者的每位權限都比對
處理動作:
-print 顯示
- ls 詳細資訊
-exec Command {} \;
example:find /tmp -atime +30 -exec mv {} {}.old \;
這裡再引入一個指令:
xargs - build and execute command lines from standard input
可以通過管道從标準輸入建立和執行指令行
看了這麼多,下面舉幾個例子吧:
1.查/tmp下屬主屬組不屬于root,并且在5分鐘之内改過的檔案。
# find /tmp/ ! -user root -a ! -group root -mmin -5 -ls
<a href="http://s3.51cto.com/wyfs02/M02/25/B9/wKiom1NmJJCjfVyCAAJtmG623k4928.jpg" target="_blank"></a>
2.查找/usr下不屬于root,bin,或者tuchao的檔案,并複制到/tmp下。
# find /usr ! \( -user root -o -user bin -o -user tuchao \) -exec cp {} /tmp \;
看看,是不是都拷貝過去了。
<a href="http://s3.51cto.com/wyfs02/M02/25/B9/wKiom1NmKyXAl5ZsAAS5MKeGqh4321.jpg" target="_blank"></a>
3.查找目前系統上,一周内内容修改過,且沒有屬主屬組的檔案,找到後cp到/tmp/good目錄裡。
# find / -mtime -7 -a -nouser -a -nogroup | xargs -i cp {} /tmp/good
看這裡使用了xargs
<a href="http://s3.51cto.com/wyfs02/M00/25/B9/wKiom1NmLtXj-VYoAAWCtJhg3vw701.jpg" target="_blank"></a>
看圖檔前幾行,找到的檔案是不是都沒屬主屬組的,當然這些檔案都是我做的為了測試用的。
這篇就寫到這也差不多了,例子也基本貫穿了難點,慢慢體會吧!
有問題歡迎與我交流——筆者QQ:1183710107
本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1406295