查找和替换整个目录的命令

Jee*_*tel 6 linux vim shell

Linux中是否有任何命令可以在给定目录和下面的文件夹中的所有文件中查找特定单词并将其替换为新单词?

Mic*_*ael 12

这将替换所有文件。如果您只需要特定类型的文件,则可以更具体。此外,它会.bak为其处理的每个文件创建一个备份文件,以防您需要还原。如果您根本不需要备份文件,请更改-i.bak-i.

find /path/to/directory -type f -exec sed -i.bak 's/oldword/newword/g' {} \;
Run Code Online (Sandbox Code Playgroud)

要在不再需要它们时删除所有备份文件:

find /path/to/directory -type f -name "*.bak" -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)


dog*_*ane 11

您可以使用以下命令:

grep -lR "foo" /path/to/dir | xargs sed -i 's/foo/bar/g'
Run Code Online (Sandbox Code Playgroud)

它用于grep查找包含字符串“foo”的文件,然后调用 sed 将其中的“foo”替换为“bar”。结果,只有那些包含“foo”的文件被修改。其余的文件没有被触及。