Я хотел бы создать список контрольных сумм md5 для всех файлов в каталоге.
Я хочу cat filename | md5sum > ouptput.txt. Я хочу сделать это в 1 шаг для всех файлов в моем каталоге.
Любая помощь будет отличной.
Отличная программа создания / проверки контрольной суммы - это крупица. Он создает даже файлы, совместимые с SFV, и проверяет их.
Он поддерживает md4, md5, sha1, sha512, crc32 и многие другие.
Кроме того, он может выполнять рекурсивное создание (- r), например md5deep или sha1deep.
И последнее, но не менее важное: вы можете форматировать вывод файла контрольной суммы; например:
rhash -r --md5 -p '%h,%p /home/\n'
выводит CSV-файл, включая полный путь к файлам.
Я считаю чрезвычайно полезным даже опцию -e переименовывать файлы, вставляя сумму crc32 в имя. [ ! d5]
Вы можете изменить «md5sum» на «rash» в примерах PhoenixNL72.
Вот еще два обширных примера:
Создайте файл md5 в каждом каталоге, который еще не имеет одного, с абсолютными путями: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
Создайте файл md5 в каждой папке, уже есть один: нет путей, только имена файлов: 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
Что отличается от 1 до 2, так это то, как файлы представлены в полученном файле md5.
Команды выполняют следующее:
Создайте файл md5 в каждой директории, у которой его еще нет, с абсолютными путями: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
Сортировка списка папок. Создайте файл md5 в каждой папке, которая еще не имеет одного: нет путей, только имена файлов: 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
Если файл @ md5Sum.md5 не существует, md5Sum будет генерировать один с контрольными суммами всех файлов в папке. 5) Установите сгенерированный файл @ md5Sum.md5 только для чтения. Вывод всего этого скрипта можно перенаправить в файл (.....; done> test.log) или передать в другую программу (например, grep). На выходе будут указаны только те каталоги, в которых они пропущены и которые были обработаны.
После успешного запуска вы получите файл @ md5Sum.md5 в каждом подкаталоге вашего текущего каталога
Я назвал файл @ md5Sum.md5, поэтому он будет указан в верхней части каталога в share samba.
Проверка всех файлов @ md5Sum.md5 может быть выполнена следующими командами:
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
После этого вы можете grep checklog.txt с помощью grep -v OK, чтобы получить список всех файлов, которые отличаются.
Чтобы регенерировать @ md5Sum.md5 в определенном Если вы изменили или добавили файлы, например, либо удалите файл @ md5Sum.md5, либо переименуйте его и снова запустите команду generate.