Oracle の RDBMS バイナリを更新する必要があります。どのファイルが変更されたか (新規、削除、変更など) を表示する perl スクリプトまたはモジュールを探しています。パッチ適用の前後にスクリプトを実行し、結果を比較する予定です。
「perl 比較」フレーズに対して Google が返す結果が多すぎるため、回答をいただければ幸いです。
よろしく、スコッティ
たぶん、git を使用して手間を省くことができます。この種のデータを表示するディレクトリでリポジトリを開始し、変更をコミットしてから、差分を使用してそれらを比較します。
これは当てはまらないかもしれませんし、git add や commit には時間がかかるかもしれませんが、可能であれば、git は無料で多くの情報を提供してくれます。
本当に perl を使用したい場合は、File::Find モジュール (walk 関数) をチェックし、stat を使用してファイルからこの統計を取得することに興味があるかもしれません。
use strict;
use warnings;
use Path::Class;
use Digest::MD5;
use Data::Dumper; # Dumper
use Text::Diff; # diff
これは、まさにそれを行う私のスクリプトに使用するモジュールです (ディレクトリ内の ZIP/PDF/CHM を追跡し、重複を排除するため)。ディレクトリをPath::Class::Dir->traverse
ウォークし、ファイル サイズDigest::MD5
とstat
mtime が同一の場合にチェックサムを再計算しないことでファイル ID を追跡し (名前の変更のために)、Data::Dumper
前回の結果を読み込んで新しい結果を保存し、Text::Diff
テキスト ファイルを比較するために使用します。古いデータと新しいデータのバージョンを表示し、差分をレポートとして出力します。出力を見たい場合はDumper
、読みやすくするために次のオプションを設定することを検討してください。
$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
ファイルのリストと各ファイルのチェックサムを作成して、diff
後で実行できますか?
たとえば、必要なコマンド ライン ツールがある場合は、次のコマンドを実行できます。
find [directory] -print0 | sort -z | xargs -0 md5sum
コマンドラインで実行し、パッチの前後で結果のファイルを比較します。欠落している行は削除されたファイルに対応し、余分な行は新しいファイルに対応し、変更されたチェックサムは変更されたファイルに対応します。
perl を使いたい場合は、File::Find と Digest::MD5 で似たようなものを書くことができます。