違い:内容以外のファイルがある場合にのみ比較してください。

違い:内容以外のファイルがある場合にのみ比較してください。

Diffを使用して、2つの場所のファイルとディレクトリが同じであることを確認したいのですが、ファイル自体の内容を比較しません。なぜなら、それが必要なすべてであり、通常のDiffはデータ量に比べて時間がかかりすぎるからです。どうすればいいですか?これを行うことができる他のDebian標準ツールはありますか?

答え1

これにはdiffを使用できません。 diffを使用する理由は何ですか?なぜ人々は可能な解決策を詳細に研究することなく常に急いで結論を下すのですか?

を使用できますが、diff -qr唯一の目標が概要ディレクトリ構造を比較することであれば、パフォーマンスの面では賢明ではありません。ここ

この質問に対する答えの1つは

vimdiff <(cd dir1; find . | sort) <(cd dir2; find . | sort)

どの

共通部分が縮小された状態で、2つのディレクトリ階層を並べて表示する素晴らしい表示を提供します。

答え2

これについてコメントします。真希の答えしかし、長すぎました。彼の解決策には次の警告があります。

ls解析またはfind類似の出力です。強くないので壊れやすい。例は次のとおりです。

$ mkdir dir{1,2}
$ touch !$/file{1..5}
touch dir{1,2}/file{1..5}
$ mkdir dir1/$'\n'.
$ touch !$/whoops
touch dir1/$'\n'./whoops
$ touch dir2/whoops
$ touch dir1/onlyin1
$ touch dir2/onlyin2
$ comm <( cd dir1 ; find . | sort ) <( cd dir2 ; find . | sort )
        .
.
./
./
        ./file1
        ./file2
        ./file3
        ./file4
        ./file5
./onlyin1
    ./onlyin2
        ./whoops

comm(代わりに、より簡単にコピーして貼り付けることができるように、3方向のテキスト比較を使用しています。vimdiff結果はと同じですvimdiff。)

ご覧のとおり、whoops実際には、ファイルの1つがwhoops名前に改行文字を含むサブディレクトリにあり、ファイルが2つのディレクトリにあることを間違って表示します。dir1

通常、人々はファイル名やディレクトリ名に改行文字を追加しません。答えは次vimdiffのとおりです。しなければならない他の特殊文字とも動作します(まだテストしていませんが)。しかし、これはまだ注意すべきことです。これをスクリプトやどのようなプロダクションコードに入れるには、2つのディレクトリツリーを正しくナビゲートして比較するなど、より強力な作業を実行します。

関連情報