Shell-Script

如何在目錄及其子目錄中的所有 php 文件中搜尋和替換文本

  • December 17, 2020

我正在尋找一個 shell 腳本,它遞歸地遍歷.php目錄中的所有文件並執行特定文本模式的搜尋和替換。

搜尋模式很長(> 5000 個字元),因此為方便起見,可能會將其保存在另一個文本文件中。它還包含正斜杠字元。

編輯:我想我想出了第一部分:

find . -name "*.php"

但是我如何在這些文件中搜尋和替換?

它可以通過 sed 和 xargs 的良好組合輕鬆完成。

find . -name "*.php" | xargs -n 1 echo

將向您展示 xargs 的力量。

之後,在範例文件上,您可以使用就地更改 (-i) 或備份更改 (-i.bak) 來測試正則表達式。如果您的模式/替換已經有一個,您也可以使用其他字元替換“/”。

最後,它應該看起來像:

pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement`
find . -name "*.php" | xargs -n 1 sed -i -e "s|$pattern|$replacement|g"

引用自:https://unix.stackexchange.com/questions/29268