【Linux教學】必備 Find 指令!

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 {} \;

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *