
私はバイナリファイルを含むAIX 6の2つのディレクトリを比較しようとしています。私はそのサーバーと私のLinuxサーバー(利用できない場合)の間で一貫した出力フォーマットを維持したいので、diff
この方法を好みます。dircmp
dircmp
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 '[^<>]'
これは、変更された行の範囲に関する情報を保持しながら、変更された行の内容をフィルタリングするために行われます。
答え2
cat -v
印刷されていない文字が^x
またはで表示されるように出力をパイプすることができ、少なくともM-x
端末は破損しません。各ファイルdiffがどのタイプのヘッダーを印刷しているかを知っている場合は、単にgrep
印刷できます| grep -E 'Only in|differ'
(例:この例のツールが見つかりませんでした)。