Как я могу рекурсивно перечислить Md5sum всех файлов в каталоге и его подкаталогах? [дубликат]

На этот вопрос уже есть ответ здесь:

Я хочу перечислить (и сохранить) контрольную сумму Md5 всех файлов в каталоге и сохраните этот список в текстовом файле с именем md5sum.txt

, было бы также неплохо, если бы я мог

  • интегрировать его в команду tree (которая создает древовидную структуру папки и файлы)
  • Заставить его работать с папками и подпапками (это вроде как важно)
10
задан 23 April 2017 в 00:22

2 ответа

Вы могли использовать find (в каталоге)

find -type f -exec md5sum '{}' \; > md5sum.txt

, Если Вы хотите исключить md5sum.txt сам файл, можно сделать так:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

можно также использовать цикл: включите рекурсивный globbing

shopt -s globstar

Затем в каталоге:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

можно исключить сам файл от этого также:

for i in **; do 
  [[ -f "$i" ]] && 
  [[ md5sum.txt != "$i" ]] && 
  md5sum "$i" >> md5sum.txt
done

Ни один из этих продуктов tree - как структура. Но они действительно печатают относительный путь в файл от начального каталога. Если Вы хотите полный путь, используйте find /path/to/directory ...

, Вы могли бы хотеть выключить globstar впоследствии (shopt -u globstar)

25
ответ дан 23 November 2019 в 04:18

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

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

вывод в файле результата будет чем-то как этот:

46684e3891d990acde2e723ee3d4e94a  /var/log/alternatives.log
39cf1ebf93452ed5f8b240b35ae73f9f  /var/log/alternatives.log.1
aa6c09c411d1d0870bca5f401d589332  /var/log/alternatives.log.2.gz
2
ответ дан 23 November 2019 в 04:18

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

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