grep コマンドの出力を使用して、見つかったすべてのファイルを置換しようとしています。問題は、見つかったファイルの一部に名前にスペースが含まれていることです。これは、私が使用しているものを簡略化した grep コマンドです (複数のメール ホストで複数の名前を検索します)。
grep -Ril oldname@foo.com *
これにより、必要なファイルを含むリストが生成され、ファイル名がリストされているだけです (-l
オプション)。バッククォートを使用して、ファイル名を Perl ワンライナーに入力しています。
perl -pi -e 's/oldname\@foo\.com/newname\@bar.com/gi' `grep -Ril oldname@foo.com *`
これは、リストされているファイルの名前にスペースが含まれていない場合に機能しますが、含まれていると壊れます。
find を使用-print0
して andを使用できることはわかっていますxargs -0
が、に相当するものはないようですgrep
。
からの出力をgrep
ファイルに入れてから読み取ることができましたが、これがワンライナーとして何らかの形で可能かどうかを知りたいです。