2つのディレクトリの内容が同じかどうかを確認する方法

2つのディレクトリの内容が同じかどうかを確認する方法

2 つの異なるディレクトリにまったく同じ内容が含まれているかどうかを確認する簡単な方法は何ですか?

答え1

find、、sha1sumおよび一連のパイプの組み合わせにより、この目的を達成できます。

find /path/to/files -type f -print0 | sort -z | xargs -0 sha1sum | cut -c1-40 | sha1sum

次のような出力が得られます。

98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821  -

注記:もちろん、末尾のダッシュは無視できます。

確認したいパスでこれを実行すると、2 つのディレクトリが同じかどうかがわかります。同じでない場合は、コマンドを編集して異なるファイルを検索できます。これを行う簡単な方法の 1 つは、| cut -c1-40 | sha1sum各ファイルとそれに対応する sha1 ハッシュを一覧表示する を削除することです (ただし、時間がかかります)。

これはどのように作動しますか?

  説明
find /path/to/files /path/to/filesディレクトリからアイテムのリストを返します
-type f ファイルのみを含める
-print0 標準出力にファイル名全体を出力し、その後にヌル文字を付加する
| その後
sort -z 改行ではなくヌルを行区切り文字として使用してリストをソートする
| その後
xargs -0 sha1sum リストの各値を実行するsha1sum
| その後
cut -c1-40 取るただ最初の40文字(sha1の長さ)
| その後
sha1sum sha1のリストのsha1ハッシュを生成する

関連情報