Для данного дерева, скажем, /var /ftpd, как мне создать хеш-файл в каждой папке этого дерева с содержимым этой папки в данном дереве? sha1sum и sha512sum не имеют опций рекурсии.
2 ответа
1
FWIW решение:
user@host bin]$ cat mkshaindir #!/bin/dash cd $1 sha512sum * >.sha512sum [user@host bin]$ find /var/ftpd -type d -print0 | xargs -0 -i mkshaindir {}
Обратите внимание, что mkshaindir, для моих целей, является отдельным компонентом, потому что мне может понадобиться создать хэш файлов в новой папке или в файле, который был недавно изменен.
Остальное оставлено в качестве упражнения для читателя.
Примечание: sha512sum будет жаловаться в STDERR о не файловом вводе (например, каталогах, файлах блоков и т.д.).
0
Скрипт должен избегать включения самого хеш-файла в расчет, так как сохранение хеш-файла делает хеш-файл недействительным.
Более того, я предлагаю использовать find -exec
для экономии ресурсов:
find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;