Как рекурсивно создать хеш-файл (sha512sum) внутри каждой папки дерева?

Для данного дерева, скажем, /var/ftpd, как мне создать хеш-файл в каждой папке этого дерева с содержимым этой папки в данном дереве? sha1sum и sha512sum не имеют опций рекурсии.

2 ответа

Решение

FWIW решение:

user @ host bin] $ cat mkshaindir 
#! / Bin/ тир
CD $ 1
sha512sum *>.sha512sum

[user @ host bin] $ find / var / ftpd -type d -print0 | xargs -0 -i mkshaindir {}

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

Остальное оставлено в качестве упражнения для читателя.

Примечание: sha512sum будет жаловаться в STDERR о не файловом вводе (например, каталогах, файлах блоков и т. Д.).

Скрипт должен избегать включения самого хеш-файла в вычисления, так как сохранение хеш-файла делает хеш-файл недействительным.
Более того, я предлагаю использовать find -exec чтобы сэкономить ресурсы:

find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;
Другие вопросы по тегам