如何在linux中递归搜索替换备份文件?

如何在linux中递归搜索替换备份文件?

我想在文件夹中的所有文件中递归搜索字符串。

如果找到该字符串,请将文件备份到同一位置(复制到<filename>-orig)并用另一个字符串替换找到的字符串。

怎么做?

我可以用一个命令来完成吗?谢谢。

答案1

你可以结合两个-exec操作find,首先找到所有包含匹配字符串的文件,其次用 replace 关键字替换字符串(保留原始文件的备份),例如

find . -type f -exec grep -il "searchstring" {} \; -exec sed -i.bak \
's/searchstring/replacestring/' {} \;

解释 :

  • -exec grep -il "searchstring":搜索“searchsring”
  • -exec sed -i.bak 's/searchstring/replacestring/':如果发现任何包含字符串的文件,则保留文件的备份并用“replacestring”替换。

请注意,在这种情况下,仅当第一个命令成功返回时才会运行第二个命令。

相关内容