我需要对文件夹(及其子文件夹)中的所有文件进行正则表达式查找和替换。执行此操作的 linux shell 命令是什么?
例如,我想在所有文件上运行它,并用新的替换文本覆盖旧文件。
sed 's/old text/new text/g'
原文由 nickf 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答795 阅读✓ 已解决
2 回答3.2k 阅读
仅使用 sed 是无法做到的。您至少需要一起使用 find 实用程序:
此命令将为每个更改的文件创建一个
.bak
文件。笔记:
-i
sed
命令的参数是 GNU 扩展,因此,如果您使用 BSD 的sed
运行此命令,则需要将输出重定向到新文件然后重命名它。find
实用程序没有在旧的 UNIX 机器中实现-exec
参数,因此,您需要使用| xargs
代替。