Команда для рекурсивного хеширования CRC (CRC32)

С помощью команд md5sum , sha1sum , sha256sum я могу взять текстовый файл, имеющий хэш и путь на строку, и проверить весь список файлов в одной команде, например sha1sum -c mydir.txt . (Указанный текстовый файл легко создать с помощью петли в find или другой.)

Есть ли способ сделать то же самое со списком хэшей CRC / CRC32?

Такие хэши часто хранятся внутри zip-подобных архивов, таких как ZIP или 7z. Например:

 $ unzip -v archive.zip Archive: archive.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 8617812 Stored 8617812 0% 12-03-2015 15:20 13fda20b 0001.tif 

Или:

 $ 7z l -slt archive.7z Path = filename Size = 8548096 Packed Size = Modified = 2015-12-03 14:20:20 Attributes = A_ -rw-r--r-- CRC = B2F761E3 Encrypted = - Method = LZMA2:24 Block = 0 

  • Как я могу закрепить содержимое текущего каталога минус все скрытые файлы?
  • Какой язык сценариев я могу использовать для автоматизации процесса конкатенации и копирования?
  • Преобразование Windows-созданного ZIP в Linux (проблемы с внутренними путями)
  • Менеджер архива не показывает файл с именем «-»
  • Как создать zip-каталогов -mtime -150
  • Объект AIX для ZIP-списка файлов
  • Извлеките один файл из zip-файла, только зная расширение
  • Как добавить огромный архив в архив и удалить его параллельно
  • One Solution collect form web for “Команда для рекурсивного хеширования CRC (CRC32)”

    У утилиты crc32 нет опции -c sha1sum . Тем не менее, проверка может быть выполнена в сценарии.

    Скажем, мы сохранили значения crc32 в файле в том же формате, что и значения sha1sum:

     a8374911 *file1.ext 32c5188e *file2 6592d5e5 *bflmpsvz 

    Crc32 можно проверить с помощью скрипта bash:

     while read line do name=${line#* \*} crc32=`crc32 "$name"` echo -n "$name: " if [ "${line% \**}" == "$crc32" ] then echo OK else echo FAILED fi done < file_with_crc32 

    Сценарий предоставляет тот же результат, что и sha1sum -c . Он выполняет итерацию по всем строкам в файле file_with_crc32 и для каждой строки

    • извлекает имя файла из строки чтения
    • вычисляет crc32
    • сравнивает вычисленное значение со значением из файла
    • печатает результат
    Linux и Unix - лучшая ОС в мире.