5

現在、私は

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

スペースを含むファイル名では機能しません。

すべてのファイルを再帰的に検索して置換する方法はありますか?

ありがとう

4

2 に答える 2

14

-Zに(aka --null) フラグを追加し、 にgrep(-0別名) フラグを追加--nullxargsます。これにより、NUL で終了するファイル名が出力され、xargsNUL で終了する引数を読み取るように指示されます。

例えば。

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 に答える