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
-
locate命令其實是"find -name"的另一種寫法,但是要比後者快得多,原因在於它不搜尋具體目錄,而是搜尋一個數據庫(/var/lib/locatedb),這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新資料庫。
-
locate命令的使用例項:
-
$ locate /etc/sh
-
搜尋etc目錄下所有以sh開頭的檔案。
-
$ locate ~/m
-
搜尋使用者主目錄下,所有以m開頭的檔案。
-
$ locate -i ~/m
-
搜尋使用者主目錄下,所有以m開頭的檔案,並且忽略大小寫。
whereis
-
whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。
-
whereis命令的使用例項:
-
$ whereis grep