查找列出的文件列表的 md5sum

md5sum of list of files listed by find

是否可以为 find 列出的文件获取单个 md5 字符串?

此代码生成了一些 md5 哈希字符串,但似乎只使用了文件名,但我还需要使用内容:

find my_dir -name "*.jpg" | md5

测试 json 个文件:

tree temp_dir

temp_dir
├── temp_1
│   ├── 071-FBA-227597_custom_faceboxes_face_bbox.json
│   └── 083-FBA-228758_custom_faceboxes_face_bbox.json
└── temp_2
    ├── 071-FBA-227597_custom_faceboxes_face_bbox.json
    └── 083-FBA-228758_custom_faceboxes_face_bbox.json

修改temp2中的一个json:

md5 temp_dir/temp_1/071-FBA-227597_custom_faceboxes_face_bbox.json
MD5 (temp_dir/temp_1/071-FBA-227597_custom_faceboxes_face_bbox.json) = 8da7666a1cf7f68b102a2ebb2ce01eae

md5 temp_dir/temp_1/083-FBA-228758_custom_faceboxes_face_bbox.json
MD5 (temp_dir/temp_1/083-FBA-228758_custom_faceboxes_face_bbox.json) = 93afe3b2b627948ff870496bf8302b85

md5 temp_dir/temp_2/071-FBA-227597_custom_faceboxes_face_bbox.json
MD5 (temp_dir/temp_2/071-FBA-227597_custom_faceboxes_face_bbox.json) = 8da7666a1cf7f68b102a2ebb2ce01eae

md5 temp_dir/temp_2/083-FBA-228758_custom_faceboxes_face_bbox.json
MD5 (temp_dir/temp_2/083-FBA-228758_custom_faceboxes_face_bbox.json) = 6308ef748f5c9a895d36bc8a71b37112

由于某些原因,文件路径列表中的 md5 不同,这是预期的吗?:

find temp_1 -name "*.json"
temp_1/071-FBA-227597_custom_faceboxes_face_bbox.json
temp_1/083-FBA-228758_custom_faceboxes_face_bbox.json

find temp_2 -name "*.json"
temp_2/071-FBA-227597_custom_faceboxes_face_bbox.json
temp_2/083-FBA-228758_custom_faceboxes_face_bbox.json

find temp_1 -name "*.json" | md5
ed0b14613ce97542a4e5531ff196378f

find temp_2 -name "*.json" | md5
50d0ded6eb3bf396a0b1c091c9067fdc

我也试过只复制 temp_1 并创建 temp_3,但它也给出了不同的哈希值,这是预期的吗?:

find temp_3 -name "*.json"
temp_3/071-FBA-227597_custom_faceboxes_face_bbox.json
temp_3/083-FBA-228758_custom_faceboxes_face_bbox.json

find temp_3 -name "*.json" | md5
f62473085a4b32b287ead4f8f9e67e15

md5 temp_3/071-FBA-227597_custom_faceboxes_face_bbox.json
MD5 (temp_3/071-FBA-227597_custom_faceboxes_face_bbox.json) = 8da7666a1cf7f68b102a2ebb2ce01eae

md5 temp_3/083-FBA-228758_custom_faceboxes_face_bbox.json
MD5 (temp_3/083-FBA-228758_custom_faceboxes_face_bbox.json) = 93afe3b2b627948ff870496bf8302b85

cat 方法产生有效结果:

find temp_1 -name "*.json" -exec cat {} \; | md5
b2abfe623e93153598d6625930f934f2

find temp_2 -name "*.json" -exec cat {} \; | md5
c64eb7a0a8749b11aa11a0312d37f81f

find temp_3 -name "*.json" -exec cat {} \; | md5
b2abfe623e93153598d6625930f934f2
cat $(find my_dir -name "*.jpg") | md5

如果文件名中有 space

find my_dir -name "*.jpg" -exec cat {} \; | md

你可以做的是 md5summd5sum:

包括filename/dirname/md5sum:

find . -type f -iname '*.jpg' -exec md5sum {} \; | md5sum

这个 returns 列表中的一个 md5sum 看起来像:

d9a881340010ad5df0b5cd99aadb327f   ./path/to/file1.jpg
8b3b2a7b974af9eea72da94c1ca02b8a   ./path/file2.jpg

包括filename/md5sum:

find . -type f -iname '*.jpg' -exec md5sum {} \; | awk -F'/' '{print substr([=12=],1,32),$NF}' | md5sum

这个 returns 列表中的一个 md5sum 看起来像:

d9a881340010ad5df0b5cd99aadb327f file1.jpg
8b3b2a7b974af9eea72da94c1ca02b8a file2.jpg

包括md5sum:

find . -type f -iname '*.jpg' -exec md5sum {} \; | cut -d" " -f1 | md5sum

这个 returns 列表中的一个 md5sum 看起来像:

d9a881340010ad5df0b5cd99aadb327f
8b3b2a7b974af9eea72da94c1ca02b8a