Intereting Posts
В чем разница между параметром grep -e и grep -E? Могу ли я легко переключаться с openSUSE Tumbleweed на Leap без переустановки всего? Как экспортировать хранилище ключей bks на debased 7.9 wheezy Выбор носителя с помощью CUPS и Xerox Phaser 7500DN Как я могу изменить модификации xrandr более 1 секунды? Время требует синхронизации. Сервер UNIX с сервером NTP; после ручного вызова времени сервера UNIX Лучший способ частично пройти через строку 25k? После печати предыдущей строки, где файл содержит один токен, теперь нужно пройти через результат, чтобы соответствовать требованию Какие темы GNOME подходят для черно-белой печати? Как запускать команды надстройки по SSH? Возвращает ли bash что-либо при выполнении команды? rsyslog по-прежнему отправляет сообщения в omusrmsg даже после использования команды `stop` Как открыть или установить exe-файлы в Whonix, или нет? xrandr: откуда берется выход VIRTUAL1? Настройка PF OpenBSD как маршрутизатора

OSX: генерировать контрольную сумму MD5 рекурсивно в текстовом файле, содержащем файлы с соответствующей контрольной суммой

В каталоге с несколькими подкаталогами, но только с одной папкой, содержащей TIFF-файлы, я хотел бы сгенерировать контрольную сумму md5, которая записывает имя файла с соответствующей контрольной суммой в текстовый файл.

Например, в каталоге TIFF у меня есть 2 подкаталога:

TIFF |- b0125TIFF |- b_0000_001.tif |- b_0000_002.tif |- b_0000_003.tif |- b_0000_004.tif |- c0126TIFF |- c_0000_001.tif |- c_0000_002.tif |- c_0000_003.tif |- c_0000_004.tif 

Мой ожидаемый текстовый файл (контрольная сумма должна быть разной):

 ** foo.md5: 188be1dbd4f6bcfdef8d25639473e6ec *b0125TIFF/b_0000_001.tif 188be1dbd4f6bcfdef8d25639473e6ec *b0125TIFF/b_0000_002.tif 188be1dbd4f6bcfdef8d25639473e6ec *b0125TIFF/b_0000_003.tif 188be1dbd4f6bcfdef8d25639473e6ec *b0125TIFF/b_0000_004.tif 188be1dbd4f6bcfdef8d25639473e6ec *c0126TIFF/c_0000_001.tif 188be1dbd4f6bcfdef8d25639473e6ec *c0126TIFF/c_0000_002.tif 188be1dbd4f6bcfdef8d25639473e6ec *c0126TIFF/c_0000_003.tif 188be1dbd4f6bcfdef8d25639473e6ec *c0126TIFF/c_0000_004.tif 

Как я могу это достичь?

Я знаю, что это рекурсивно генерирует контрольную сумму в одном каталоге:

 find -s . -type f -exec md5 -q {} \; | md5 

Вы не хотите передавать вывод find и md5 через md5 , который просто даст вам контрольную сумму MD5 из множества контрольных сумм MD5 …


 $ find TIFF -type f -name '*.tif' -exec md5 {} ';' >md5.txt $ cat md5.txt MD5 (TIFF/b0125TIFF/file-1.tif) = d41d8cd98f00b204e9800998ecf8427e MD5 (TIFF/b0125TIFF/file-2.tif) = d41d8cd98f00b204e9800998ecf8427e MD5 (TIFF/b0125TIFF/file-3.tif) = d41d8cd98f00b204e9800998ecf8427e MD5 (TIFF/c0126TIFF/file-1.tif) = d41d8cd98f00b204e9800998ecf8427e MD5 (TIFF/c0126TIFF/file-2.tif) = d41d8cd98f00b204e9800998ecf8427e MD5 (TIFF/c0126TIFF/file-3.tif) = d41d8cd98f00b204e9800998ecf8427e 

Реализация md5 на macOS не поддерживает проверку контрольных сумм с помощью md5 -c к сожалению, но утилита shasum делает:

 $ find TIFF -type f -name '*.tif' -exec shasum {} ';' >sums.txt $ cat sums.txt da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/b0125TIFF/file-1.tif da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/b0125TIFF/file-2.tif da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/b0125TIFF/file-3.tif da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/c0126TIFF/file-1.tif da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/c0126TIFF/file-2.tif da39a3ee5e6b4b0d3255bfef95601890afd80709 TIFF/c0126TIFF/file-3.tif $ shasum -c sums.txt TIFF/b0125TIFF/file-1.tif: OK TIFF/b0125TIFF/file-2.tif: OK TIFF/b0125TIFF/file-3.tif: OK TIFF/c0126TIFF/file-1.tif: OK TIFF/c0126TIFF/file-2.tif: OK TIFF/c0126TIFF/file-3.tif: OK 

shasum вычисляет SHA1-хэш файла по умолчанию.