以下內容轉載自http://www.kuqin.com/linux/20091009/70541.html
find 命令在linux中是很常用到的一個尋找命令,它的功能非常地強大。可以結合正則匹配來搜尋系統中的指定的內容,以下我就記錄一下這個find常用到的一些用法
首先我們來看看find的總體用法
find path option [-print -exec -ok]
其中path是指定在哪個路徑中尋找內容。如/var下尋找內容,option是find中的一些屬性值,常用的有-name,-type,-mtime,-ctime,-atime,-user,-group,-nouser,-nogroup,-perm等,[-print -exec -ok]是可選屬性值,-print是指把尋找到的內容輸出到指定的地方,-exec與-ok都是執行另處的command命令,但兩都也有一點不同,-exec在執行指定的command時不會給使用者顯示提示或操作資訊,但是-ok就會在有提示詢問操作時給使用者顯示資訊,直到使用者做了選擇時才繼續執行。
常用的option值說明
-name 指定尋找的內容是檔案。
-type 指定尋找的檔案的類型,它有d,l,b,p,f,c等檔案類型,d是尋找目錄,l是尋找連結檔,b是尋找塊檔案,p是尋找管道檔案,f是普通檔案,c是字元裝置檔案
-mtime,-ctime,atime都是指按時間尋找,-mtime是檔案的修改時間,-ctime是檔案的建立時間,atime是後找開檔案時間
-user是尋找指定使用者帳號的檔案
-group是尋找指定組帳號的檔案
-nouser尋找無使用者帳號檔案
-nogroup是尋找無組帳號檔案
下面舉幾個例子說明一下find的用法
(1)我想找出/etc目錄下是passw開頭的所有檔案
find /etc -name "passw*"
這個例子中"*"號是正則匹配中的“所有”的意思
(2)我想找出/var/log目錄下所有的前5天的.log檔案
find /var/log -name "*.log" -mtime +5
這個例子中"+5"是指5天以前的檔案,如是查"-5"則是5天以內的檔案
(3)我想找出/home目錄下是"ygl"這個使用者的檔案
find /home -user "ygl"
(4)我想找出/home目錄下是"ygl"這個使用者的所有的普通檔的檔案
find /home -user "ygl" -type f
(5)我想找出/var/log目錄下的所有的.log檔案並查看它的詳細資料
find /var/log -name "*.log" -type f -exec ls -l {} \;
這個例子中用到了可選屬性-exec用來執行ls命令,其中的-exec或者-ok的用法都要在它所執行的command後面接" {} \;"
(6)我想尋找出在/etc中以passw開頭的所有檔案中有沒有ygl這些內容的
find /etc -name "passw*" -exec grep -in "ygl" {} \;
由上面幾個例子中可以看出find命令的強大。在實際的使用過程中,你將會發現find將會給你帶來太多的方便。