在Linux命令下如果需要快速自己系統所需要處理的文件,可以通過find命令快速進行檢索。
如果想在某個路徑下查找相應的文件可以執行如下命令:
find path -name filename
# path 文件路徑,可以用 / 來表示目錄,當然如果能大概確定目錄建議縮小目錄范圍,這樣可以檢索速度更快;filename 指的是文件檢索的文件名。
比如:find / -name mysql.conf
# 系統會從根目錄遍歷所有文件,然后找到mysql.conf 文件輸出找到的結果輸出在控制台。
當然也可以通過通配符來模糊指定文件名,比如我想查找系統中后綴是.conf文件文件,可以執行如下命令:
find / -name *.conf
關於find命令的語法格式如下:
find path -option [ -print ] [ -exec -ok command ] {} \
參數說明:
-print(可選參數): find命令將匹配的文件輸出到標准輸出。
-exec(可選參數): find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格
-ok(可選參數): 與-exec的作用相同,它會以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確認是否執行。
find部分常用參數:
mount, -xdev : 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件。
-amin n : 在過去 n 分鍾內被讀取過的文件
-anewer file : 比文件 file 更晚被讀取過的文件
-atime n : 在過去n天內被讀取過的文件
-cmin n : 在過去 n 分鍾內被修改過的文件
-cnewer file :比文件 file 文件時間更新的文件
-ctime n : 在過去n天內被修改過的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的文件,ipath 會忽略大小寫
-name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫
-size n[c] #查長度為n塊[或n字節]的文件
下面列出一些常用的find命令:
find ./ -type f #查找文件
#查找目錄
find ./ -type d
#查找名字為file1的文件或目錄
find ./ -name file1
#查找名字符合正則表達式的文件,注意前面的‘.*’(查找到的文件帶有目錄)
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大於10K的文件或目錄
find ./ -size +10k
#查找文件size小於10k的文件或目錄
find ./ -size -10k