ファイルの文字列を再帰的に置き換える

ファイルの文字列を再帰的に置き換える

page_path\example_filename.txt文字列のバックスラッシュをスラッシュに置き換えたいと思います。また、大規模なファイルシステムで実行し、すべてのディレクトリを再帰的に検索できることを願っています。

オンラインでを使用するように言う人を見つけましgrepたが、うまくいくことはできません。区切り文字とエスケープ文字のさまざまなバリエーションを試しましたが、得られませんでした。xargssed

これは私が実行したいコマンドです。
grep -lr -e 'page_path\\' * | xargs sed -i 's/page_path\/page_path//g'

よろしくお願いします。

ベストアンサー1

これを使用すると、grep | xargsファイル名にスペース、引用符、バックスラッシュ(実装によってはより多くの可能性があります)に関連するxargs問題が発生します。

grepそして、GNU実装を使用すると、ゼロバイトを区切り文字として使用することで、xargsこれらの問題を回避できます。grep -lZr ... | xargs -r0 sed ...

ここで、sed コマンドについて説明します。トリックは、s/a/b/他の文字の代わりに区切り文字として使用できることです。たとえば、次のようになりますs#a#b#

sed -i 's#page_path\\#page_path/#g'

おすすめ記事