查找并replace多个文件中的特定术语

如何在Linux中replace多个文件中的特定术语?

例如,我在我的目录中有许多文件:

file1.txt file2.txt file3.txt

我需要find一个词“searchword”,并用“replaceword”replace它。

Solutions Collecting From Web of "查找并replace多个文件中的特定术语"

sed -i.bak 's/searchword/replaceword/g' file*.txt # Or sed -i.bak '/searchword/s/searchword/replaceword/g' file*.txt 

用bash 4.0,你可以做递归搜索文件

 #!/bin/bash shopt -s globstar for file in **/file*.txt do sed -i.bak 's/searchword/replaceword/g' $file # or sed -i.bak '/searchword/s/searchword/replaceword/g' $file done 

或者用GNU查找

 find /path -type f -iname "file*.txt" -exec sed -i.bak 's/searchword/replace/g' "{}" +; 

没有什么可观的,但认为这可能对其他人有帮助。 尽管你可以编写一个shell脚本来轻松完成这个任务,但是这一行也许更容易:

 grep -lr -e '<searchthis>' * | xargs sed -i 's/<searchthis>/<replacewith>/g' 

使用编辑脚本

虽然sed现在有一个就地编辑选项,您也可以使用ed或ex程序来达到此目的…

 for i in "$@"; do ed "$i" << \eof; done 1,$s/searchword/replaceword/g w q eof 

这 ruby脚本为我工作,也重新命名与该错字的文件/文件夹。

尝试mffr,如果你在一个git回购

 pip install mffr mffr searchword replaceword