Возвращение MD5-хэша всех файлов в каталоге в файл .txt с именем [дубликат]

У меня есть каталог картинок.

Мне нужен MD5-хэш каждого файла в этом каталоге и имя файла, помещенного в документ .txt . Этот файл необходимо прочитать позже, чтобы одновременно ссылаться на MD5 и имя файла.

Примечание:
Я хотел бы просто вытащить все файлы каталогов, указав их мной.
Я пробовал играть с tar и find , и мне просто не удалось найти хорошее решение ...

Это пример каталога:

/Desktop/testing
RandomFilename1.png
RandomFilename2.png
RandomFilename3.png

Вывод .txt :

RandomFilename1,da39a3ee5e6b4b0d3255bfef95601890afd80709
RandomFilename2,da39a3ee5e6b4b0d3255bfef95601890afd80709
RandomFilename3,da39a3ee5e6b4b0d3255bfef95601890afd80709

Я безуспешно искал везде в сети.
Это будет на терминале Linux.

4
задан 7 November 2018 в 00:39

3 ответа

Можно использовать следующее bash команда:

for file in testing/*; do md5sum $file; done > res.txt

Конечно, необходимо скорректировать целевой каталог res.txt.
Результат мог выглядеть подобным этому:

8b1500ea6fe42927891fd1831bb955ba  testing/Pic1.gif
73f3222889a14411a3b78675ed0bc269  testing/Pic2.gif
c5b18ef1ea1346f13f668a7ead4e4c92  testing/Pic3.gif

Таким образом, хеш MD5 сопровождается именем файла и путем.

3
ответ дан 1 December 2019 в 09:59

Для того, что вы хотите сделать, выполните md5sum и используйте sed или awk для преобразования вывода

md5sum *.png | sed 's/^\([0-9a-f]\+\) \+\(.\+\)/\2,\1/' >images.md5sums
md5sum *.png | awk '{print $2","$1}' >image.md5sums

Однако, простой вывод md5sum равен hash filename и эквивалентно вашему формату. Использование этого стандартного формата вывода md5sum часто более удобно, так как вы можете использовать его непосредственно с md5sum -c для проверки хеша файлов (после копирования или передачи по сети). Некоторые другие утилиты также могут ожидать этот конкретный формат.

1
ответ дан 1 December 2019 в 09:59

Я записал маленький сценарий согласно определенным параметрам:

cd /home/username/Desktop/testing
for F in *
do
    echo "$F", $(md5sum "$F" | sed -e 's/'"$F"'//g')
done

Пример произвел:

1.txt, c8ef7cca2ceb3f878921b1ff163dbf91
demo, e9470a3c74b32036fa148dfabce70929
File with spaces.txt, c691b3d2fc2678839a9c141b6ee1524e
line.cpp, e0732d2781c6b2b57d413f79f9c1fd28
test, 3734699610e8d322767cf65f90ed43ce
test.cpp, afbe5b90cf002e1eb6df4cf98dfe4c0e

Примечание: Этот сценарий показал бы вывод в терминале. Для сохранения его в файле, можно использовать > 1.txt при выполнении файла, для, например:

./test.sh > 1.txt
-1
ответ дан 1 December 2019 в 09:59

Другие вопросы по тегам:

Похожие вопросы: