Я хотел бы создать список контрольных сумм md5 для всех файлов в каталоге.
Я хочу cat filename | md5sum > ouptput.txt
. Я хочу сделать это за 1 шаг для всех файлов в моем каталоге.
Любая помощь будет отличной.
command-line
Уолтер Уэйн Лейтвайлер
источник
источник
Ответы:
Вы можете передать
md5sum
несколько имен файлов или расширений bash:Если вы хотите получить фантазию, вы можете использовать такие вещи, как
find
детализация и фильтрация файлов, а также рекурсивная работа:источник
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.
Наконец, что не менее важно, вы можете отформатировать вывод файла контрольной суммы; например:
выводит файл CSV, включая полный путь к файлам, рекурсивно начиная с
/home
каталога.Я нахожу чрезвычайно полезным даже параметр -e переименовывать файлы, вставляя сумму crc32 в имя.
Вы можете изменить «md5sum» на «rhash» в примерах PhoenixNL72.
источник
Вот два более обширных примера:
Создайте файл md5 в каждом каталоге, в котором его еще нет, с абсолютными путями:
Создайте файл md5 в каждой папке, у которой его еще нет: пути отсутствуют, только имена файлов:
От 1 до 2 отличается способ представления файлов в результирующем файле md5.
Команды делают следующее:
Вывод всего этого скрипта может быть перенаправлен в файл (.....; done> test.log) или передан в другую программу (например, grep). Вывод покажет только, какие каталоги были пропущены, а какие обработаны.
После успешного запуска вы получите файл @ md5Sum.md5 в каждом подкаталоге вашего текущего каталога.
Я назвал файл @ md5Sum.md5, чтобы он отображался в верхней части каталога в общей папке samba.
Проверить все файлы @ md5Sum.md5 можно с помощью следующих команд:
После этого вы можете выполнить grep checklog.txt с помощью команды grep -v OK, чтобы получить список всех файлов, которые отличаются.
Чтобы заново создать @ md5Sum.md5 в определенном каталоге, например, когда вы изменили или добавили файлы, либо удалите файл @ md5Sum.md5, либо переименуйте его и снова введите команду generate.
источник
Я столкнулся с этой проблемой, и хотя приведенные выше решения изящны, я хотел быстро и грязно взломать эту ситуацию: 1 каталог с подкаталогами на один уровень внутри него.
Итак, введите каталог в оболочке и запустите:
Он получает все файлы в каталоге верхнего уровня, удаляет предупреждение об ошибке о том, что подкаталоги являются каталогами, а затем запускает md5sums для содержимого подкаталога. Преимущество: легко запомнить, делает именно то, что должен. Меня всегда смущает поиск синтаксиса, и я никогда не могу вспомнить его изо всех сил, поэтому не нужно зацикливаться и т. Д., Имея дело с пробелами в именах каталогов, этот один вкладыш работал нормально. Не надежное мощное решение, не подходящее для> 1 уровня подкаталогов, но быстрое и простое решение проблемы.
источник