Я хотел бы создать список контрольных сумм md5 для всех файлов в каталоге.
Я хочу cat filename | md5sum > ouptput.txt
. Я хочу сделать это за 1 шаг для всех файлов в моем каталоге.
Любая помощь будет отличной.
Я хотел бы создать список контрольных сумм md5 для всех файлов в каталоге.
Я хочу cat filename | md5sum > ouptput.txt
. Я хочу сделать это за 1 шаг для всех файлов в моем каталоге.
Любая помощь будет отличной.
Ответы:
Вы можете передать md5sum
несколько имен файлов или расширений bash:
$ md5sum * > checklist.chk # generates a list of checksums for any file that matches *
$ md5sum -c checklist.chk # runs through the list to check them
cron: OK
database.sqlite3: OK
fabfile.py: OK
fabfile.pyc: OK
manage.py: OK
nginx.conf: OK
uwsgi.ini: OK
Если вы хотите получить фантазию, вы можете использовать такие вещи, как find
детализация и фильтрация файлов, а также рекурсивная работа:
find -type f -exec md5sum "{}" + > checklist.chk
md5sum
файлов внутри подкаталогов, при этом вышеприведенные данные md5sum *
переходят на уровень подкаталогов, говоря ... это каталог
find -type f -exec md5sum '{}' +
команду `find -type f -exec md5sum '{}'` Я смог ее получить. Спасибо :)
openssl md5 * > checklist.txt
**
рекурсивно оценивает (например, zsh), это еще проще:md5sum **/* 2>/dev/null
Отличная программа для создания / проверки контрольных сумм - это rhash. Он создает даже SFV-совместимые файлы и проверяет их тоже.
Он поддерживает MD4, MD5, Sha1, Sha512, CRC32 и многие другие.
Более того, он может выполнять рекурсивное создание (опция -r), например, md5deep или sha1deep.
Наконец, что не менее важно, вы можете отформатировать вывод файла контрольной суммы; например:
rhash --md5 -p '%h,%p\n' -r /home/
выводит файл CSV, включая полный путь к файлам, рекурсивно начиная с /home
каталога.
Я нахожу чрезвычайно полезным даже параметр -e переименовывать файлы, вставляя сумму crc32 в имя.
Вы можете изменить «md5sum» на «rhash» в примерах 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.
Команды делают следующее:
Вывод всего этого скрипта может быть перенаправлен в файл (.....; done> test.log) или передан в другую программу (например, grep). Вывод покажет только, какие каталоги были пропущены, а какие обработаны.
После успешного запуска вы получите файл @ md5Sum.md5 в каждом подкаталоге вашего текущего каталога.
Я назвал файл @ md5Sum.md5, чтобы он отображался в верхней части каталога в общей папке 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.
Я столкнулся с этой проблемой, и хотя приведенные выше решения изящны, я хотел быстро и грязно взломать эту ситуацию: 1 каталог с подкаталогами на один уровень внутри него.
Итак, введите каталог в оболочке и запустите:
md5sum * */* 2>/dev/null > md5sum.md5
Он получает все файлы в каталоге верхнего уровня, удаляет предупреждение об ошибке о том, что подкаталоги являются каталогами, а затем запускает md5sums для содержимого подкаталога. Преимущество: легко запомнить, делает именно то, что должен. Меня всегда смущает поиск синтаксиса, и я никогда не могу вспомнить его изо всех сил, поэтому не нужно зацикливаться и т. Д., Имея дело с пробелами в именах каталогов, этот один вкладыш работал нормально. Не надежное мощное решение, не подходящее для> 1 уровня подкаталогов, но быстрое и простое решение проблемы.