ฉันกำลังพยายามสร้างการตรวจสอบ MD5 ของรูปภาพหลายแสนรูปบนไดรฟ์ภายนอกโดยใช้คำสั่งต่อไปนี้บน OS X 10.9.5 ฉันได้รับข้อผิดพลาดมากมาย ฉันใช้ find กับชื่อไฟล์ที่สิ้นสุดด้วย nul และไพพ์เป็น xargs เพราะฉันคิดว่ามันทำงานเร็วที่สุด
find . -type f -not -name "checksums.md5" -print0 | xargs -0 md5 -r > checksums.md5
ฉันจำกัดให้แคบลงเหลือเพียงการใช้ -type f
ซึ่งคุณสามารถดูได้ในตัวอย่างต่อไปนี้:
mymac:Finals user$ find . -name "0153*"
./0153_IMG_4812_Coniston village.jpg
mymac:Finals user$ find . -name "0153*" -type f
./0153_IMG_4812_Coniston village.jpg
find: ./0154_IMG_4814_Après hike.jpg: No such file or directory
mymac:Finals user$ find . -name "0154*"
./0154_IMG_4814_Après hike.jpg
mymac:Finals user$ find . -name "0154*" -type f
find: ./0154_IMG_4814_Après hike.jpg: No such file or directory
เมื่อฉันรันคำสั่งเดิมบนฮาร์ดไดรฟ์ ฉันเห็นข้อผิดพลาด "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" จำนวนมาก และไฟล์เหล่านั้นถูกข้ามไปและไม่ได้รับการตรวจสอบ
มีความคิดอะไรบ้าง?
find
เหล่านั้นผ่านhexdump -C
และเปรียบเทียบไบต์ของชื่อไฟล์ในทั้งสองกรณี เปรียบเทียบกับการถ่ายโอนข้อมูลฐานสิบหกของเอาต์พุตของls
ในไดเร็กทอรีเดียวกันนั้นด้วย - person Ken Thomases   schedule 16.01.2015export LC_TYPE=C
ก่อนวิ่งfind
อาจจะ - person Mark Setchell   schedule 16.01.2015export LC_TYPE=C
ไม่ได้ช่วยอะไร - person Clam   schedule 16.01.2015ls
ในไดเร็กทอรี โดยไม่มีรูปแบบ glob แน่นอนว่าคุณจะต้องค้นหาไฟล์ hex dump หรือคุณสามารถกรองด้วยgrep
ก่อนที่จะไพพ์ลงในhexdump -C
เช่น.ls | grep 0154 | hexdump -C
. - person Ken Thomases   schedule 16.01.2015find
อย่างใด ลองcommand find ...
- person Reinstate Monica Please   schedule 16.01.2015hexdump -C
แสดงลำดับอักขระ UTF-8 เดียวกันสำหรับชื่อไฟล์ที่เสียหายและแก้ไขแล้ว:65 cc 80
- person Clam   schedule 16.01.2015