Mac OSX - 如何在整个目录中搜索和替换特定文本?

时间:2015-11-19 22:58:58

标签: macos unix replace terminal find

我有以下文件夹结构 -

Foo/
   y.c
   Bar/
      a.c
   Baz/
      b.c
   Pie/
      m.c
      Ham/
         x.c

我只需要做的就是替换Foo /目录中的Alice()的每个实例,这是我当前的目录并将其转换为Bob()。在这个微不足道的问题上,我遇到了最艰难的时刻。

我尝试了以下的变体:

find ./ -type f -print0 | xargs -0 sed -i ’s/Alice\(\)/Bob\(\)/g’
find ./ -type f -exec sed -i 's/Alice\(\)/Bob\(\)/g' '{}' \;
sed 's/Alice\(\)/Bob\(\)/g ' `grep -l -R 'Alice\(\)' .`

使用exec代替xargs,似乎遇到了错误,如:

Can't do inplace edit: . is not a regular file.
sed: RE error: illegal byte sequence

等等。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

Mac内置BSD sed与GNU /usr/bin/sed -i '' 's/foo/bar/g' input.txt 不同。

BSD sed

''

注意:需要零长度/usr/local/bin/sed -i 's/foo/bar/g' input.txt 进行就地编辑。

GNU sed

<SolidColorBrush x:Key="ColorMain">#FF222222</SolidColorBrush>