【发布时间】:2019-07-11 09:45:10
【问题描述】:
在vi 编辑器中,我了解以下行会搜索和替换文件中的所有匹配项:
:%s/search_string/replacement_string/g
如何在所有子目录(整个文件夹树)中的所有文件中搜索字符串并在所有这些文件中进行替换(出现搜索字符串)?
【问题讨论】:
标签: vi
在vi 编辑器中,我了解以下行会搜索和替换文件中的所有匹配项:
:%s/search_string/replacement_string/g
如何在所有子目录(整个文件夹树)中的所有文件中搜索字符串并在所有这些文件中进行替换(出现搜索字符串)?
【问题讨论】:
标签: vi
我更喜欢在 vim 之外使用 sed:
find . -type f -name "*" | xargs sed -i "s/search_string/replacement_string/g"
将在当前目录及其下的所有文件中用replacement_string 替换所有search_string 实例。
OSX(BSD sed):
find . -type f -name "*" | xargs sed -i '' "s/search_string/replacement_string/g"
注意多余的空字符串 arg sed -i '' "s/...
奖励:我经常发现在所有文件中以交互方式搜索/替换(每次替换时使用 y/n 提示)很有用。 Vim 处理得很好:
for filename in $(find . -type f -name "*"); do vim -c "%s/search_string/replacement_string/gc" -c "wq" "${filename}"; done
感谢所有过去回答过这个问题并帮助我进行无数重构的人。 Search and replace in Vim across all the project files
【讨论】: