如何在多個 PHP 檔案中搜尋文字字串?

如何在多個 PHP 檔案中搜尋文字字串?

長話短說,我得到了一個包含近 800,000 個 php 檔案的資料夾。我想在每個文件中搜尋一個字串,如果該文件中存在該字串,則該文件將複製到另一個目錄。

這可以從終端進行嗎?

到目前為止我得到了:

grep -i -n -r 'ppr-1792' * | cp $1 move_to_here

但這顯然行不通。 $1 需要是包含符合文字的檔案名稱。

我該怎麼辦?

答案1

您可以使用 for 迴圈並測試 grep 的回傳程式碼,或使用grep -c(count matches) 並查看符合計數是否大於 1。

例如

for i in *
do
    grep -i -n 'Power' "$i"

    if [ "$?" -eq 0 ]
    then
            cp "$i" mvd
    fi
done

答案2

您可以使用漂亮的襯裡輕鬆完成此操作:

grep -l -i -r -Z pattern | xargs -0 -I source cp source /target

一些評論它是如何工作的。如果檔案中存在匹配項,Grep 的 -l 選項僅列印檔案名,因此它會產生要複製的檔案清單。 Xargs 指令為每個複製指令建構一個指令並執行它。 Xargs 將名為「source」的參數替換為從標準輸入讀取的檔案名稱。檔案名稱中的空格和其他有趣字元由 -Z 和 -0 選項處理。

相關內容