grep和sed,文件名中包含空格

时间:2013-06-25 11:49:35

标签: linux search replace sed grep

目前,我有

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

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

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

由于

2 个答案:

答案 0 :(得分:11)

-Z(又名--null)标记添加到grep,将-0(也称为--null)标记添加到xargs。 这将输出NUL终止的文件名,并告诉xargs读取NUL终止的参数。

例如

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

答案 1 :(得分:3)

用sed查找应该有效:

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

OR

find $WORKDIR/ -type f -print0 | xargs -0 sed -i.bak "s/$schema/EXI1/gI"