Unix/Linux 的 find 指令使用教學、技巧與範例整理


Unix/Linux 的 find 指令使用教學、技巧與範例整理

指定檔

指定檔名搜尋

若要在目前的目錄底下,找尋檔案名稱為 gtwang.txt 的檔案,可以使用:

find . -name gtwang.txt

執行後,find 會列出所有檔名是 gtwang.txt 的檔案列表。

./gtwang/gtwang.txt

在 /home 目錄底下,找尋檔案名稱為 gtwang.txt 的檔案:

find /home -name gtwang.txt

輸出為

/home/gtwang/gtwang/gtwang.txt

在 /home 目錄底下,不分英文大小寫,找尋檔案名稱為 gtwang.txt 的檔案:

find /home -iname gtwang.txt

輸出為

/home/gtwang/gtwang/GTWang.txt
/home/gtwang/gtwang/GTWANG.TXT
/home/gtwang/gtwang/gtwang.txt

案類型搜尋

find 的 -type 參數可以指定檔案的類型,常用的選項有:

  • d:目錄。
  • p:具名的 pipe(FIFO)。
  • f:一般的檔案。
  • l:連結檔,如果與 -L 或 -follow 參數同時使用時,就只會搜尋到有問題的連結檔,如果想要與 -L 同時使用,請改用 -xtype
  • s:socket 檔案。

在根目錄底下搜尋名稱為 gtwang 的目錄:

find / -type d -name gtwang

輸出會像這樣

/home/gtwang
/home/gtwang/gtwang

列出目前目錄底下所有的 PHP 檔案:

find . -type f -name "*.php"

檔案權限

-perm 可以指定檔案的權限,例如列出權限是 777 的所有檔案:

find . -type f -perm 0777

這個指令在檢查系統漏洞時會常用到。另外我們也可以用排除的方式,列出所有權限不是 777 的檔案:

find . -type f ! -perm 777

find 也用來搜尋具有特殊權限的檔案,例如找尋權限是 644 而且有 SGID 的檔案(關於 SGID 可以參考鳥哥的文件):

find . -perm 2644

找尋權限是 644 而且有 Sticky Bit 的檔案:

find . -perm 1551

列出系統中所有 SUID 的檔案:

find / -perm /u=s

列出系統中所有 SGID 的檔案:

find / -perm /g+s

列出唯讀的檔案:

find / -perm /u=r

列出可執行的檔案:

find / -perm /a=x