以下に掲示されたソリューションのためのよりエレガントなソリューションがあるかどうかに興味があります。
[]$ find ./abc -type f -exec sed -n 's/test/best/pg' {} + ; find ./abc -type f -exec sed -i 's/test/best/g' {} +
最初のfind sed
コマンドは、見つかったすべてのパターンをコンソールに印刷します。 2番目のfind sed
コマンドは実際にファイルのパターンを置き換えます。
私が経験した問題:
sed -n -i
(複数のコマンドライン修飾子/パラメータを持つことはできません) - ?確認された方ですか?sed
置き換える前に結果を印刷するローカル修飾子はありません。 - ?解決策が見つかりません。解決策が存在し、コマンドが変更される可能性があります(つまり、次は何も出力せずに後ろから置き換えられます!)。find ./abc -type f -exec sed -i 's/test/best/pg' {} +
ベストアンサー1
まあ、2つを別々に持つ必要はありません。find
注文する:
find abc -type f -exec sed -n 's/test/best/pg' {} + -exec sed -i 's/test/best/g' {} +
./
...そして以前のバージョンは必要ありませんabc
。