5

目前,我有

grep -irl $schema $WORKDIR/ | xargs sed -i 's/'"$schema"'/EXI1/gI'

这不适用于带有空格的文件名。

任何想法,如何递归搜索和替换所有文件?

谢谢

4

2 回答 2

14

-Z(aka --null) 标志添加到grep,并将-0(also aka --null) 标志添加到xargs. 这将输出 NUL 终止的文件名,并告诉xargs读取 NUL 终止的参数。

例如。

grep -irlZ $schema $WORKDIR/ | xargs -0 sed -i 's/'"$schema"'/EXI1/gI'
于 2013-06-25T11:57:23.630 回答
3

使用 sed 查找应该可以:

find $WORKDIR/ -type f -exec sed -i.bak "s/$schema/EXI1/gI" '{}' +

或者

find $WORKDIR/ -type f -print0 | xargs -0 sed -i.bak "s/$schema/EXI1/gI"
于 2013-06-25T11:54:02.933 回答