1. 程式人生 > >Linux之檔案查詢命令詳解

Linux之檔案查詢命令詳解

find

查詢檔案
find ./ -type f

查詢目錄
find ./ -type d

查詢名字為test的檔案或目錄
find ./ -name test

查詢名字符合正則表示式的檔案,注意前面的‘.*’(查詢到的檔案帶有目錄)
find ./ -regex .*so.*\.gz

查詢目錄並列出目錄下的檔案(為找到的每一個目錄單獨執行ls命令,沒有選項-print時檔案列表前一行不會顯示目錄名稱)
find ./ -type d -print -exec ls {} \;

查詢目錄並列出目錄下的檔案(為找到的每一個目錄單獨執行ls命令,執行命令前需要確認)
find ./ -type d -ok ls {} \;

查詢目錄並列出目錄下的檔案(將找到的目錄新增到ls命令後一次執行,引數過長時會分多次執行)
find ./ -type d -exec ls {} +

查詢檔名匹配*.c的檔案
find ./ -name \*.c

列印test檔名後,列印test檔案的內容
find ./ -name test -print -exec cat {} \;

不列印test檔名,只打印test檔案的內容
find ./ -name test -exec cat {} \;

查詢檔案更新日時在距現在時刻二天以內的檔案
find ./ -mtime -2

查詢檔案更新日時在距現在時刻二天以上的檔案
find ./ -mtime +2

查詢檔案更新日時在距現在時刻一天以上二天以內的檔案
find ./ -mtime 2

查詢檔案更新日時在距現在時刻二分以內的檔案
find ./ -mmin -2

查詢檔案更新日時在距現在時刻二分以上的檔案
find ./ -mmin +2

查詢檔案更新日時在距現在時刻一分以上二分以內的檔案
find ./ -mmin 2

查詢檔案更新時間比檔案abc的內容更新時間新的檔案
find ./ -newer abc

查詢檔案訪問時間比檔案abc的內容更新時間新的檔案
find ./ -anewer abc

查詢空檔案或空目錄
find ./ -empty

查詢空檔案並刪除
find ./ -empty -type f -print -delete

查詢許可權為644的檔案或目錄(需完全符合)
find ./ -perm 664

查詢使用者/組許可權為讀寫,其他使用者許可權為讀(其他許可權不限)的檔案或目錄
find ./ -perm -664

查詢使用者有寫許可權或者組使用者有寫許可權的檔案或目錄
find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w

查詢所有者許可權有讀許可權的目錄或檔案
find ./ -perm -u=r

查詢使用者組許可權有讀許可權的目錄或檔案
find ./ -perm -g=r

查詢其它使用者許可權有讀許可權的目錄或檔案
find ./ -perm -o=r

查詢所有者為lzj的檔案或目錄
find ./ -user lzj

查詢組名為gname的檔案或目錄
find ./ -group gname

查詢檔案的使用者ID不存在的檔案
find ./ -nouser

查詢檔案的組ID不存在的檔案
find ./ -nogroup

查詢有執行許可權但沒有可讀許可權的檔案
find ./ -executable \! -readable

查詢檔案size小於10個位元組的檔案或目錄
find ./ -size -10c

查詢檔案size等於10個位元組的檔案或目錄
find ./ -size 10c

查詢檔案size大於10個位元組的檔案或目錄
find ./ -size +10c

查詢檔案size小於10k的檔案或目錄
find ./ -size -10k

查詢檔案size小於10M的檔案或目錄
find ./ -size -10M

查詢檔案size小於10G的檔案或目錄
find ./ -size -10G

locate

 
  1. locate命令其實是"find -name"的另一種寫法,但是要比後者快得多,原因在於它不搜尋具體目錄,而是搜尋一個數據庫(/var/lib/locatedb),這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新資料庫。

  2.  
  3. locate命令的使用例項:

  4.  
  5.   $ locate /etc/sh

  6.  
  7. 搜尋etc目錄下所有以sh開頭的檔案。

  8.  
  9.   $ locate ~/m

  10.  
  11. 搜尋使用者主目錄下,所有以m開頭的檔案。

  12.  
  13.   $ locate -i ~/m

  14.  
  15. 搜尋使用者主目錄下,所有以m開頭的檔案,並且忽略大小寫。

whereis

 
  1. whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。

  2.  
  3. whereis命令的使用例項:

  4.  
  5.   $ whereis grep