在 Mac OS 中,如何在所有目录及其子目录中查找和替换特定文本?
答案1
# Find all files under the directory hierarchy rooted at 'root', and replace
# all instances of the regular expression 'pattern' with 'replacement' in all
# of those files:
find root -type f -exec sed -i~ 's/pattern/replacement/g' '{}' '+'
如果遇到命令行长度限制,请将'+'
末尾的 替换为';'
。这将使其运行速度变慢(因为它要为每个文件分叉一个新进程),但不会存在命令行过长的危险sed
。
您还可以通过添加适当的过滤器仅对某些文件进行替换find
(例如,-name *.txt
仅替换 .txt 文件)。