find
在 Linux 扮演的就像是 Window 的「尋找」功能一樣,可以依照你的線索快速搜尋到指定的檔案被粗心的你丟到哪裡去,是 Linux 使用者必備技能。
由於這篇是以草記為主,所以不提供輸出結果,各位都可以自己在 Linux 上面做嘗試。
find 參數介紹
-name
:檔案名稱,可用 * 代表萬用字元,舉例來說可以用*.txt
來找出所有副檔名為 txt 的檔案-iname
:檔案名稱,忽略大小寫-type
:檔案類型-type f
:檔案(file)-type d
:目錄(Directory)-type l
:連結檔-type b
:裝置檔-type c
:裝置檔-type p
:管線檔-type s
:socket 檔
-size
:檔案大小-size +100M
:大於 100M-size -100M
:小於 100M-size 100M
:等於 100M
-mtime
:檔案修改時間-mtime +10
:10 天前 =-mtime 10
-mtime -10
:10 天內
-atime
:檔案存取時間-atime +10
:10 天前-atime -10
:10 天內
-ctime
:檔案建立時間-ctime +10
:10 天前-ctime -10
:10 天內
-user
:檔案擁有者-user root
:檔案擁有者為 root
-group
:檔案群組-group nginx
:檔案群組為 nginx
-perm
:檔案權限-perm 777
:檔案權限為 777
-exec
:執行指令-exec rm -rf {} \;
:執行 rm -rf 指令,{} 代表搜尋到的檔案,代表說找到的檔案或資料夾將會全部被強制刪掉- 特性說明:有多少檔案符合 find 結果,就會執行多少次
-print
:顯示檔案路徑-delete
:刪除檔案-ls
:顯示檔案詳細資訊-empty
:檔案大小為 0-newer
:比較檔案時間-newer file1
:比較檔案時間,檔案時間比 file1 新的檔案
-noleaf
:不顯示檔案,只顯示資料夾-noleaf -type f
:不顯示檔案,只顯示資料夾
-maxdepth
:最大資料夾深度-maxdepth 2
:最大資料夾深度為 2,也就是只會搜尋到第二層資料夾
-mindepth
:最小資料夾深度-mindepth 2
:最小資料夾深度為 2,也就是只會搜尋到第二層資料夾以上
-depth
:深度優先,舉例來說,如果有一個資料夾裡面有一個資料夾,那麼會先搜尋到裡面的資料夾,再搜尋外面的資料夾-xdev
:不跨越不同的裝置-follow
:跟隨捷徑指向的原目錄-nouser
:沒有檔案擁有者-nogroup
:沒有檔案群組-regex
:檔案名稱符合正規表示式-regex ".*\.txt"
:檔案名稱符合正規表示式,找出所有副檔名為 txt 的檔案
-not
:反向搜尋-not -name "*.txt"
:找出所有不是副檔名為 txt 的檔案
-path
:檔案路徑-path "/home/*"
:找出所有路徑為 /home/ 的檔案
實際指令
找出 當前資料夾 副檔名為 .txt 並且檔案大於 20KB 且檔案擁有者為 root
小提示:如果有使用到 * 的話,檔案名稱兩邊請務必加上單引號 ‘
find . -name '*.txt' -size +20K -user root
在 整台主機 中找到 nginx 的 資料夾 路徑
find / -type d -name nginx
刪除(rm) 30 天以上未存取過的 tmp 資料夾中的檔案
find /tmp -type d -atime +30 -exec rm -rf {} \;