grep和sed与文件名中的空格

目前,我有

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

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

任何想法,如何search和recursionreplace所有文件?

谢谢

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

例如。

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

找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"