diffを使用したディレクトリの比較

diffを使用したディレクトリの比較

私はバイナリファイルを含むAIX 6の2つのディレクトリを比較しようとしています。私はそのサーバーと私のLinuxサーバー(利用できない場合)の間で一貫した出力フォーマットを維持したいので、diffこの方法を好みます。dircmpdircmp

diff manページ表示によると、

Directory1およびDirectory2パラメーターが指定されている場合、diffコマンドは両方のディレクトリーで同じ名前のテキストファイルを比較します。 1つのディレクトリにのみ表示されるさまざまなバイナリ、共通サブディレクトリ、およびファイルを一覧表示します。

ただし、バイナリファイルも比較され、その違いがstdoutとして出力されるため、端末画面が印刷できない文字でいっぱいになり、さらに私のウィンドウ(私が使用している)のサイズも修正されますpUTTY。バージョンにはdiffこのオプションはありません-q。この出力を抑制し、ファイルが異なると報告する方法はありますか?rsync -n両側から欠落しているファイルを見つけるには、to引数とfrom引数を逆にして2回実行する必要があるため、使用したくありません。

関連質問:ここそしてここ

ベストアンサー1

さまざまなシステムでさまざまな操作を実行することなく作成できる移植可能なコードの量には制限があります。dircmp効果があれば気分が悪くないでください。GNUの違い可能であれば。

if type dircmp >/dev/null 2>/dev/null; then
  dircmp dir1 dir2
else
  diff -r dir1 dir2
fi

どのファイルが変更されたかを知りたい場合、コンテンツのリストに興味がない場合は、出力をフィルタリングしてdiffヘッダー行のみを保持できます。 (警告:ファイル名に改行文字が含まれていると、出力が解析されないことがあります。)

diff -r dir1 dir2 | grep -v '^[<>0-9]'

grep -v '[^<>]'これは、変更された行の範囲に関する情報を保持しながら、変更された行の内容をフィルタリングするために行われます。

おすすめ記事