Tôi đang cố gắng so sánh tất cả các tệp trong hai thư mục thông qua md5sum trong một lệnh. Một số như sau (bash) trong Debian:
$ cd ~/FOLDER1
$ md5sum ~/FOLDER2/* | md5sum -c -
Ý tưởng là đầu ra của các giá trị băm từ md5sum đầu tiên sẽ được chuyển sang cái thứ hai và được sử dụng làm tệp đầu vào. Tuy nhiên, thử nghiệm này cho thấy rằng nó chỉ so sánh từng tệp trong FOLDER2 với chính nó và trả về "OK" cho mỗi tệp. Tôi nghĩ lý do điều này không hoạt động là vì đầu ra tên tệp từ md5sum đầu tiên bao gồm đường dẫn đầy đủ. Tôi đã nhìn md5deep
nhưng không tìm thấy gì để giúp tôi ở đó. Tôi biết rằng có thể thực hiện md5sum cho một thư mục, ghi kết quả ra một tệp và sau đó sử dụng tệp đó làm đầu vào cho md5sum thứ hai. Tôi muốn làm tất cả trong một dòng qua một đường ống, thay vì sử dụng hai lệnh và viết ra một tệp.
Chỉnh sửa: Câu trả lời được chấp nhận ở đây (sử dụng diff
) có thể làm những gì tôi muốn, nhưng tôi không biết nếu diff
(chính xác) so sánh các tệp nhị phân.
Chỉnh sửa: Nhận đầu ra mà tôi muốn bằng md5sum (hiển thị tên tệp và "OK"), tôi đã dùng đến cách viết một tệp bó. Thực hiện với diffFolders.sh ~/FOLDER1 ~/FOLDER2
.
#!/bin/bash
HERE=$PWD
cd "$1"
md5sum * > /tmp/md5sum.cmp
cd "$2"
md5sum -c /tmp/md5sum.cmp
cd $HERE
Kịch bản này sẽ chỉ so sánh các tập tin có trong ~/FOLDER
. Nếu ~/FOLDER2
có các tệp bổ sung, chúng sẽ không được so sánh và không có đầu ra nào cho biết chúng thậm chí còn tồn tại.
diff
, điều này khiến tôi mất một lúc :) Trong Debian, lệnh làmd5sum
và hàm băm thực tế nằm trong cột 1.