Linux 中是否有任何命令可以在给定目录和下面的文件夹中的所有文件中找到特定的单词并将其替换为新单词?
答案1
这将替换所有文件。如果您只需要特定类型的文件,则可以将其变得更具体。此外,它还会为其.bak
处理的每个文件创建备份文件,以防您需要恢复。如果您根本不需要备份文件,请更改-i.bak
为-i
。
find /path/to/directory -type f -exec sed -i.bak 's/oldword/newword/g' {} \;
当不再需要所有备份文件时,删除它们:
find /path/to/directory -type f -name "*.bak" -exec rm -f {} \;
答案2
您可以使用以下命令:
grep -lR "foo" /path/to/dir | xargs sed -i 's/foo/bar/g'
它用于grep
查找包含字符串“foo”的文件,然后调用 sed 将这些文件里的“foo”替换为“bar”。结果,只有包含“foo”的文件被修改。其余文件保持不变。
答案3
不是一个单一的命令而是多个命令的组合:
find /home/bruno/old-friends -type f -exec sed -i 's/ugly/beautiful/g' {} ;
示例来自这里