使用xargs sed查找和替换 - 我可以将结果保存到文件中吗?

时间:2012-01-31 20:56:11

标签: replace sed find grep xargs

我的代码用'bar'替换'foo'的所有实例:

find . -type f |
xargs grep 'foo' -l |
xargs sed -i 's|foo|bar|g'

我想将修改过的文件列表保存到文本文档中。可能吗?

编辑:

这是对我有用的最终代码:

find . -type f -print0 |
xargs -0 grep 'foo' -l |
tee result.txt |
xargs -0 sed -i 's|foo|bar|g'

不确定这是否是最快捷的方式,但对于几千个文件,此方法和其他建议方法之间的速度差异可能非常小。

1 个答案:

答案 0 :(得分:8)

看起来像xargs一样无用,通常与find结合使用。

find . -type f -exec grep 'foo' -l {} ";" -exec sed -i 's|foo|bar|g' {} ";" -ls > file.lst

小心使用它,因为我没有测试它。我不确定,您是否要更改文件名列表或文件内容。由于您使用grepsed进行搜索,我认为仅使用sed就足够了:

find . -type f -exec sed -i 's|foo|bar|g' {} ";" -ls > file.lst