最简单的递归查找和替换方法?

时间:2010-03-31 14:13:47

标签: grep replace

我希望以递归方式搜索文本文件目录,并用foo替换文件中的每个bar。实现这一目标的最简单方法是什么?

我想grep会在一行中完成这项工作,但我似乎找不到这样的例子。

我在OS X工作。

5 个答案:

答案 0 :(得分:13)

GNU find

find /path -type f -iname "*.txt" -exec sed -i.bak 's/foo/bar/g' "{}" +;

答案 1 :(得分:3)

grep仅用于查找内容,而不是用于修改它们。

对于使用类似grep的界面进行修改,通常使用sed。就其本身而言,sed不支持任何类型的递归 - 它一次只能在一个文件上运行。要添加它,通常使用find查找包含所需模式的文件,然后让它调用sed来修改文件。

答案 2 :(得分:2)

的zsh

sed -i 's/foo/bar/g' **/*.txt

答案 3 :(得分:1)

尝试: grep -rl "foo" .|xargs sed -i 's/foo/bar/g'

答案 4 :(得分:0)

有一个很好的自由文本编辑器可以简单轻松地完成这类工作:TextWrangler