我需要对文件夹(及其子文件夹)中的所有文件进行正则表达式查找和替换。执行此操作的 linux shell 命令是什么?
例如,我想对所有文件运行此命令,并用新的替换文本覆盖旧文件。
sed 's/old text/new text/g'
最佳答案
仅使用 sed 是无法做到的。您至少需要同时使用 find 实用程序:
find . -type f -exec sed -i.bak "s/foo/bar/g" {} \;
此命令将为每个更改的文件创建一个 .bak
文件。
注意事项:
sed
命令的-i
参数是 GNU 扩展,因此,如果您使用 BSD 的sed
运行此命令,您将需要将输出重定向到一个新文件,然后重命名它。find
实用程序没有在旧的 UNIX 机器中实现-exec
参数,因此,您需要使用| xargs
代替。
关于regex - 更改文件夹中的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905144/