如何在 Linux_Bash 中查找不同目录中的所有同名文件并更新每个文件中的特定文本?

如何在 Linux_Bash 中查找不同目录中的所有同名文件并更新每个文件中的特定文本?

我在不同的目录中有一堆同名“abc.php”的文件。我想查找所有文件并替换每个文件中的特定文本行,即“hello”替换为“bye”。我必须更新的每个文件中的文本都重复多次。有什么办法吗?

答案1

这将递归地查找当前目录中的所有 *.php 文件.,并在找到的每一行中将“hello”多次替换为“bye”。

find . -name "*.php" -print0 | xargs -0 sed -i 's/hello/bye/g'

在应用此操作之前,请确保备份当前目录。

或者替代方案:

find . -name "*.php" -print0 | xargs -0 sed -i'.bak' 's/hello/bye/g'

这将在应用替换之前创建一个备份,例如“abc.php”->“abc.php.bak”。

相关内容