в linux, как вычислить md5 сразу нескольких файлов и поместить вывод в текстовый файл?

У меня есть много файлов в моем пути, которые выглядят как file_01.gz, file_02.gz и т. д.

Я хотел бы вычислить md5 checksums для каждого из них и сохранить вывод в текстовом файле с чем-то вроде

filename  md5
file01    fjiroeghreio

Возможно ли это в линуксе?

Большое спасибо!


person ℕʘʘḆḽḘ    schedule 26.04.2016    source источник


Ответы (3)


md5sum file*.gz > output.txt

Выходной файл разделен пробелами, без заголовка

person mefju    schedule 26.04.2016

Вы можете использовать расширение имени файла оболочки:

md5sum *.gz > file
person Ruslan Osmanov    schedule 26.04.2016

В Linux уже есть инструмент под названием md5sum, поэтому все, что вам нужно сделать, это вызвать его для каждого файла, который вы хотите. В приведенном ниже подходе вы получаете формат инструмента md5sum по умолчанию, «SUM NAME», по одному на строку для каждого найденного файла. При использовании двойного перенаправления (>>) каждый вызов будет добавляться в конец выходного файла sums.txt.

#!/bin/bash
for f in *.gz; do
    md5sum "$f" >> sums.txt
done

Вышеупомянутое является только иллюстрацией, вам, вероятно, следует проверить наличие выходного файла, разобраться с ошибками и т. д.

Есть много способов сделать это, так что все зависит от дальнейших требований. Должен ли формат иметь форму, которую вы указываете, должен ли он рекурсивно использовать каталоги и т. д.?

person Joe    schedule 26.04.2016
comment
Вы всегда должны указывать имена файлов в кавычках. - person Arkadiusz Drabczyk; 26.04.2016