Я пытаюсь создать контрольные суммы MD5 для сотен тысяч фотографий на внешних дисках, используя следующую команду в OS X 10.9.5. Я получаю кучу ошибок, хотя. Я использую find с именами файлов, завершающимися нулем, которые передаются в 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
в каталоге, без шаблона глобуса. Очевидно, вам придется искать шестнадцатеричный дамп. Или вы можете отфильтровать его с помощью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