他のファイルを開かずに比較するには?

他のファイルを開かずに比較するには?

2つのディレクトリAとBがあり、それぞれに多くのサブディレクトリがあります。

geom001, geom002 ....etc

各サブディレクトリには、results.txtというファイルが含まれています。 AのすべてのファイルをBのすべてのファイルと開かずに比較し、Bの1つ以上のファイルに似たAのファイルが1つ以上あることを確認したいと思います。次のコマンドを使用してaのすべてのファイルを繰り返すにはどうすればよいですか?

cmp --silent  file1 file2  || echo "file1 and file2 are different"

ベストアンサー1

ファイルが同じ場合、md5sumsもまったく同じなので、次のように使用できます。

find A/ B/ -type f -exec md5sum {} + | sort | uniq -w32 -D

md5sumの長さは常に128ビット(または16バイトまたは32個の16進数)で、md5sumプログラム出力では16進数を使用します。したがって、コマンド-w32のオプションを使用して、各行uniqの最初の32文字のみを比較します。

これは印刷されますみんな一意でないmd5sumを持つファイル。つまり繰り返し。

注:これは、A /またはB /の場所に関係なく重複ファイルを検出するため、/A/subdir1/fileおよびA/subdir2/otherfileが等しい場合は印刷を続けます。重複したコンテンツが複数ある場合は、すべて印刷されます。

awk '{print $2}'たとえば、またはまたはcutなどを使用して、出力からmd5sumをパイプすることができます。sed処理にさらに使用できるように連想配列(別名「ハッシュ」)に便利なキーなので、出力に残しておきます。awkperl

おすすめ記事