Lew*_*wis 4 grep replace sed find xargs
我的代码用'bar'替换'foo'的所有实例:
find . -type f |
xargs grep 'foo' -l |
xargs sed -i 's|foo|bar|g'
Run Code Online (Sandbox Code Playgroud)
我想将修改后的文件列表保存到文本文档中.可能吗?
编辑:
这是对我有用的最终代码:
find . -type f -print0 |
xargs -0 grep 'foo' -l |
tee result.txt |
xargs -0 sed -i 's|foo|bar|g'
Run Code Online (Sandbox Code Playgroud)
不确定这是否是最快捷的方式,但对于几千个文件,这个和其他建议方法之间的速度差异可能非常小.
看起来像是无用的xargs,经常与之结合使用find.
find . -type f -exec grep 'foo' -l {} ";" -exec sed -i 's|foo|bar|g' {} ";" -ls > file.lst
Run Code Online (Sandbox Code Playgroud)
小心使用它,因为我没有测试它.我不确定,您是否要更改文件名列表或文件内容.由于您使用grep和搜索sed,我认为只需使用sed就足够了:
find . -type f -exec sed -i 's|foo|bar|g' {} ";" -ls > file.lst
Run Code Online (Sandbox Code Playgroud)