【Linux Command】找出所有指定檔案並刪除

起因是一個 wordpress 分到兩台主機去放,然後用 nginx 當成 route 分流,靜態檔案(html / js / css)在第一台、php 在第二台,當要進行整網站備份的時候就暈了,分別備份好像也是可行方案之一,但是完整備份呢?

對於 linux 指令不太熟悉的情況下,當然是順利地利用 Google 來解決問題。
原文網頁

要達成這個目的,利用功能強大的 find 指令就可以簡單迅速的完成。

基本的 find 命令語法如下:

find dir-name criteria action
  1. dir-name:指定目錄,例如搜尋 /tmp/
  2. criteria:指定檔案,例如 “*.sh”
  3. action:找到檔案後的動作,例如刪除它

假設要刪除在目前這個目錄(包含子目錄)中所有 .sh 的檔案,指令如下:

find . -name "*.sh" -exec rm -rf {} \;

或者

find . -type f -name "*.sh" -exec rm -f {} \;

上面兩個指令的差別在於,第一個指令是連目錄名稱最後是 .sh 的都會刪除掉!

說明:

  1. -name “FILE-TO-FIND”:檔案模板(嘖,不太會翻 pattern 的意思)
  2. -exec rm -rf {} \;:刪除所有找到的檔案
  3. -type f:只針對檔案,不處理目錄

當然,上述的命令如果你不小心用 sudo 來執行,然後指定根目錄的話,整個 OS 掛掉的機會我想會比明天出大太陽還高一些。

補充說明,如果要找檔案內包含的文字,指令如下:

find . -name "*.php" -exec grep -H "eval" {} \;