
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ハッシュを生成する |