2012-05-11 3 views
1

OracleのRDBMSバイナリを更新する必要があります。私はどのファイルが変更されたかを表示するperlスクリプトまたはモジュールを探しています(新規、削除、変更など)。パッチの前後でスクリプトを実行し、その結果を比較する予定です。ディレクトリ内のファイルのバージョン管理のようなPerlスクリプトまたはモジュール?

「perl compare」というフレーズにGoogleが返す結果が多すぎるため、私は答えに感謝します。

敬具、 スコッティ

答えて

3

たぶん、あなたはgitのを使用し、手間のあなたを惜しまことができます。この種のデータを表示するディレクトリでrepoを開始し、変更をコミットして差分を使用してそれらのデータを比較します。

おそらくこれは当てはまりません。おそらくgitの追加やコミットには長い時間がかかりますが、可能であればgitは無料で多くの情報を提供します。

本当にperlを使いたいのであれば、File :: Findモジュール(walk関数)をチェックし、statを使ってファイルからこの統計を取得することに興味があるかもしれません。

+0

良いアイデア:あなたはDumper出力を見たい場合は、読みやすくするために、次のオプションを設定することを検討。しかし残念ながら、HP-UXシステムには非常に小さな組み込みツールがあり、私はrootアカウントを持っていません。 – Scottie

1

ファイルのリストと各ファイルのチェックサムを作成してから、後でdiffを実行できますか?例えば

必要なコマンドラインツールを持っている場合、あなたは、コマンドラインで

find [directory] -print0 | sort -z | xargs -0 md5sum 

を実行して、パッチの前と後の結果のファイルを比較できます。欠落した行は削除されたファイルに対応し、余分な行は新しいファイルに対応し、変更されたチェックサムは変更されたファイルに対応します。

もしPerlを使いたいなら、File :: FindとDigest :: MD5のようなものを書くことができます。私はちょうどそれが(ディレクトリにZIP/PDF/CHMを追跡し、重複を排除するために)ない私のスクリプトに使用するモジュールをだ

2
use strict; 
use warnings; 
use Path::Class; 
use Digest::MD5; 
use Data::Dumper; # Dumper 
use Text::Diff; # diff 

Path::Class::Dir->traverseを使用して、Digest::MD5statを使用して、ファイルサイズとmtimeが同じである(私の目的には十分安全である)ときにチェックサムを再計算しないでファイルの識別情報を追跡し(名前の場合)、Data::Dumperに最後の結果をロードして保存します。 Text::Diffを使用して、古いデータと新しいデータのテキストファイルバージョンを比較し、diffをレポートとして出力します。 Gitの(または他のDRCS)と

$Data::Dumper::Terse = 1; 
$Data::Dumper::Indent = 1; 
$Data::Dumper::Sortkeys = 1; 
関連する問題