Mac OSX - 如何在整个目录中搜索和替换特定文本?
Mac OSX - how do I do a search and replace across an entire directory for a particular text?
我有以下文件夹结构 -
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\(\)' .`
with exec
而不是 xargs
并且似乎会出现如下错误:
Can't do inplace edit: . is not a regular file.
sed: RE error: illegal byte sequence
等等。有人可以帮我吗?
Mac 内置 BSD sed
与 GNU sed
不同 sed
.
BSD sed
/usr/bin/sed -i '' 's/foo/bar/g' input.txt
注意: 需要零长度 ''
才能就地编辑。
GNU sed
/usr/local/bin/sed -i 's/foo/bar/g' input.txt
我有以下文件夹结构 -
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\(\)' .`
with exec
而不是 xargs
并且似乎会出现如下错误:
Can't do inplace edit: . is not a regular file.
sed: RE error: illegal byte sequence
等等。有人可以帮我吗?
Mac 内置 BSD sed
与 GNU sed
不同 sed
.
BSD sed
/usr/bin/sed -i '' 's/foo/bar/g' input.txt
注意: 需要零长度 ''
才能就地编辑。
GNU sed
/usr/local/bin/sed -i 's/foo/bar/g' input.txt