現在、私は
grep -irl $schema $WORKDIR/ | xargs sed -i 's/'"$schema"'/EXI1/gI'
スペースを含むファイル名では機能しません。
すべてのファイルを再帰的に検索して置換する方法はありますか?
ありがとう
-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"