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

Leg*_*end 11 linux ubuntu search replace

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

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

file1.txt file2.txt file3.txt

我需要找到一个单词"searchword"并将其替换为"replaceword".

gho*_*g74 15

sed -i.bak 's/searchword/replaceword/g' file*.txt
# Or sed -i.bak '/searchword/s/searchword/replaceword/g' file*.txt
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

或者使用GNU查找

find /path -type f -iname "file*.txt" -exec sed -i.bak 's/searchword/replace/g' "{}" +;
Run Code Online (Sandbox Code Playgroud)


Leg*_*end 12

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

grep -lr -e '<searchthis>' * | xargs sed -i 's/<searchthis>/<replacewith>/g'
Run Code Online (Sandbox Code Playgroud)