変更を報告するコマンドラインperlコマンドを取得する

変更を報告するコマンドラインperlコマンドを取得する

私は複数のファイルからプロトコルを削除するために次のコマンド(Solarisで)を使用しています。

find .  -name "*.txt"  -exec perl -pi  -e 's/http//g' '{}' \;

編集したファイルのレポートを取得できるように詳細な出力を取得する方法はありますか?

ありがとう、アンディ

ベストアンサー1

以下を使用して、各ファイルの置換回数を取得できます。

find . -type f -exec perl -pi -e '
    $count{$ARGV} += s/http//g;
    END {for (keys %count) {print "$_: $count{$_}\n" if $count{$_}}}' {} +

このソリューションと元のソリューションでは、perl交換が完了したかどうかに関係なくファイルが再作成されます。

コマンドを;終了するために使用しないでください。各ファイルに対して1つのPerlを呼び出すことなく、一度に複数のファイルを処理できます。-execperl

実際に交換を行わずに出力のみを希望する場合は、上記のコマンドでに置き換えてください-pi-n

次のようにすることもできます。

find . -type f -exec grep -c http /dev/null {} +

カウントを取得するにはワイヤー含めますhttp(発生回数と必ずしも同じである必要はありませんhttp)。

おすすめ記事