【发布时间】:2013-06-22 04:51:25
【问题描述】:
目前,我有
grep -irl $schema $WORKDIR/ | xargs sed -i 's/'"$schema"'/EXI1/gI'
这不适用于带有空格的文件名。
任何想法,如何递归搜索和替换所有文件?
谢谢
【问题讨论】:
标签: linux search replace sed grep
目前,我有
grep -irl $schema $WORKDIR/ | xargs sed -i 's/'"$schema"'/EXI1/gI'
这不适用于带有空格的文件名。
任何想法,如何递归搜索和替换所有文件?
谢谢
【问题讨论】:
标签: linux search replace sed grep
将-Z(又名--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"
【讨论】: