在多个文件中查找并替换特定术语

时间:2010-02-15 03:27:07

标签: linux search ubuntu replace

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

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

FILE1.TXT FILE2.TXT file3.txt

我需要找一个单词“searchword”并将其替换为“replaceword”。

5 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:12)

没什么了不起的,但认为这对其他人有帮助。虽然你可以编写一个shell脚本来轻松实现这一点,但这个单行程可能更容易:

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

答案 2 :(得分:2)

使用ed脚本

虽然sed现在有一个就地编辑选项,但你也可以使用ed或ex程序......

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

答案 3 :(得分:0)

This ruby​​脚本为我工作,也用这个错字重命名文件/文件夹。

答案 4 :(得分:0)

如果您在git repo中,请尝试mffr

pip install mffr
mffr searchword replaceword