天天看點

linux中的find 指令

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将會給你帶來太多的友善

繼續閱讀