page_path\example_filename.txt
文字列のバックスラッシュをスラッシュに置き換えたいと思います。また、大規模なファイルシステムで実行し、すべてのディレクトリを再帰的に検索できることを願っています。
オンラインでを使用するように言う人を見つけましgrep
たが、うまくいくことはできません。区切り文字とエスケープ文字のさまざまなバリエーションを試しましたが、得られませんでした。xargs
sed
これは私が実行したいコマンドです。
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'