Tôi muốn tạo một danh sách tổng kiểm tra md5 cho tất cả các tệp trong một thư mục.
Tôi muốn cat filename | md5sum > ouptput.txt
. Tôi muốn làm điều này trong 1 bước cho tất cả các tệp trong thư mục của tôi.
Bất kỳ trợ giúp sẽ là tuyệt vời.
Tôi muốn tạo một danh sách tổng kiểm tra md5 cho tất cả các tệp trong một thư mục.
Tôi muốn cat filename | md5sum > ouptput.txt
. Tôi muốn làm điều này trong 1 bước cho tất cả các tệp trong thư mục của tôi.
Bất kỳ trợ giúp sẽ là tuyệt vời.
Câu trả lời:
Bạn có thể vượt qua md5sum
nhiều tên tệp hoặc bash mở rộng:
$ md5sum * > checklist.chk # generates a list of checksums for any file that matches *
$ md5sum -c checklist.chk # runs through the list to check them
cron: OK
database.sqlite3: OK
fabfile.py: OK
fabfile.pyc: OK
manage.py: OK
nginx.conf: OK
uwsgi.ini: OK
Nếu bạn muốn có được sự ưa thích, bạn có thể sử dụng những thứ như find
để xem chi tiết và lọc các tệp, cũng như làm việc đệ quy:
find -type f -exec md5sum "{}" + > checklist.chk
md5sum
các tệp trong md5sum *
thư mục con , phần phát ra ở trên đi vào cấp thư mục con bằng cách nói ... là một thư mục
find -type f -exec md5sum '{}' +
và `find -type f -exec md5sum '{}'` Tôi đã có thể lấy nó. Cảm ơn :)
openssl md5 * > checklist.txt
**
đệ quy (chẳng hạn như zsh), điều đó thậm chí còn đơn giản hơn:md5sum **/* 2>/dev/null
Một chương trình tạo / xác minh tổng kiểm tra tuyệt vời là rhash. Nó tạo ra các tệp tương thích SFV và cũng kiểm tra chúng.
Nó hỗ trợ md4, md5, sha1, sha512, crc32 và nhiều thứ khác.
Ngoài ra, nó có thể tạo đệ quy (tùy chọn -r) như md5deep hoặc sha1deep.
Cuối cùng nhưng không kém phần quan trọng, bạn có thể định dạng đầu ra của tệp tổng kiểm tra; ví dụ:
rhash --md5 -p '%h,%p\n' -r /home/
xuất ra một tệp CSV bao gồm đường dẫn đầy đủ của các tệp đệ quy bắt đầu với /home
thư mục.
Tôi thấy cực kỳ hữu ích ngay cả tùy chọn -e đổi tên tập tin bằng cách chèn crc32 sum vào tên.
Bạn có thể thay đổi "md5sum" bằng "rhash" trong ví dụ PhoenixNL72.
Dưới đây là hai ví dụ mở rộng hơn:
Tạo một tệp md5 trong mỗi thư mục chưa có, với các đường dẫn tuyệt đối:
find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done
Tạo một tệp md5 trong mỗi thư mục chưa có: không có đường dẫn, chỉ có tên tệp:
find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] && md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done
Điều khác biệt giữa 1 và 2 là cách các tệp được trình bày trong tệp md5 kết quả.
Các lệnh làm như sau:
Đầu ra của toàn bộ tập lệnh này có thể được chuyển hướng đến một tệp (.....; xong> test.log) hoặc chuyển sang chương trình khác (như grep). Đầu ra sẽ chỉ cho bạn biết thư mục nào bị bỏ qua và đã được xử lý.
Sau khi chạy thành công, bạn sẽ kết thúc với tệp @ md5Sum.md5 trong mỗi thư mục con của thư mục hiện tại của bạn
Tôi đặt tên tệp là @ md5Sum.md5 để nó được liệt kê ở đầu thư mục trong phần chia sẻ samba.
Xác minh tất cả các tệp @ md5Sum.md5 có thể được thực hiện bằng các lệnh tiếp theo:
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
Sau đó, bạn có thể grep checklog.txt bằng grep -v OK để có danh sách tất cả các tệp khác nhau.
Để tạo lại một @ md5Sum.md5 trong một thư mục cụ thể, chẳng hạn như khi bạn thay đổi hoặc thêm tệp, hãy xóa tệp @ md5Sum.md5 hoặc đổi tên nó và chạy lại lệnh tạo.
Tôi gặp phải vấn đề này và trong khi các giải pháp ở trên rất thanh lịch, tôi muốn có một bản hack nhanh và bẩn cho tình huống này: 1 thư mục, với các thư mục con một cấp nằm sâu bên trong nó.
Vì vậy, nhập thư mục trong một shell và chạy:
md5sum * */* 2>/dev/null > md5sum.md5
Điều này nhận được tất cả các tệp trong thư mục cấp cao nhất, loại bỏ cảnh báo lỗi về các thư mục con là thư mục và sau đó chạy md5sums trên nội dung thư mục con. Ưu điểm: dễ nhớ, thực hiện chính xác những gì nó phải làm. Tôi luôn bị nhầm lẫn bởi tìm cú pháp và không bao giờ có thể nhớ nó ra khỏi đỉnh đầu của tôi, vì vậy không cần phải lặp, v.v., xử lý khoảng trắng trong tên thư mục, lớp lót này hoạt động tốt. Không phải là một giải pháp mạnh mẽ mạnh mẽ, không tốt cho> 1 cấp thư mục con, nhưng là một cách khắc phục nhanh chóng và dễ dàng cho vấn đề.