在命令行中查找和替换多个文件

Vij*_*jay 35 unix command-line command-line-arguments

如何在unix上的多个文件中的命令行中查找和替换字符串?

Vij*_*jay 44

有很多方法.但其中一个答案是:

find . -name '*.html' |xargs perl -pi -e 's/find/replace/g'
Run Code Online (Sandbox Code Playgroud)


Sta*_*tan 25

像Zombie解决方案(我假设更快)但是使用sed(许多发行版和OSX上的标准)而不是Perl:

find . -name '*.py' | xargs sed -i .bak 's/foo/bar/g'
Run Code Online (Sandbox Code Playgroud)

这将替换所有 OCCURENCES在当前目录下的Python文件以及与每个文件创建备份.py.bak扩展.

并删除de .bak文件:

find . -name "*.bak" -delete
Run Code Online (Sandbox Code Playgroud)


Dig*_*oss 6

我总是用ed脚本ex脚本做到这一点.

for i in "$@"; do ex - "$i" << 'eof'; done
%s/old/new/
x
eof
Run Code Online (Sandbox Code Playgroud)

命令只是:从六行模式.


Xav*_*CLL 5

使用带有名称或带有空格的目录的 find 和 sed 使用此:

find . -name '*.py' -print0 | xargs -0 sed -i 's/foo/bar/g'
Run Code Online (Sandbox Code Playgroud)