ディレクトリ内のファイルのハッシュを使用して、2つの異なるディレクトリを比較したいと思います。

ディレクトリ内のファイルのハッシュを使用して、2つの異なるディレクトリを比較したいと思います。

各ディレクトリ内のすべてのファイル間のハッシュを確認して2つのディレクトリを比較し、sha256ハッシュを使用して2つのディレクトリが互いに==互いであることを確認します。

答え1

hash関数とコマンドを使用して両方のディレクトリを比較できます。たとえば、次のようになります。

cd dir1; sha256sum * >../hash_file
cd ../dir2; sha256sum -c ../hash_file >/dev/null 2>&1
EXITCODE=$?

終了コード0は、ディレクトリ内のファイルが同じであることを意味します。サブディレクトリがあると、正しく機能しない可能性があります。

答え2

ディレクトリ内の各ファイルの内容を単一のハッシュに繰り返し含めるには、findすべての一般的なファイルを見つけてcatexecを使用して接続してパイプし、sha256sum次のようにファイルに保存できます。

find dir1 -type f -exec cat '{}' + | sha256sum > hash1
find dir2 -type f -exec cat '{}' + | sha256sum > hash2
diff -q hash1 hash2

関連情報