Как я могу вычислить md5 контрольную сумму каталога?

Создайте новый файл, скопируйте строки от старого до нового, и сделайте замену перед записью строк в новый файл.

127
задан zx8754 12 October 2017 в 09:31
поделиться

5 ответов

find /path/to/dir/ -type f -name "*.py" -exec md5sum {} + | awk '{print $1}' | sort | md5sum

Команда find выводит список всех файлов с расширением .py. Md5sum вычисляется для каждого файла .py. awk используется для получения сумм md5 (игнорируя имена файлов, которые могут быть не уникальными). Суммы md5 отсортированы. Затем возвращается md5sum этого отсортированного списка.

Я проверил это, скопировав тестовый каталог:

rsync -a ~/pybin/ ~/pybin2/

Я переименовал некоторые файлы в ~ / pybin2.

find ... md5sum Команда возвращает одинаковые выходные данные для обоих каталогов.

2bcf49a4d19ef9abd284311108d626f1  -
146
ответ дан 24 November 2019 в 00:41
поделиться

GNU find

find /path -type f -name "*.py" -exec md5sum "{}" +;
2
ответ дан 24 November 2019 в 00:41
поделиться

Если вы хотите, чтобы одна md5sum охватывала весь каталог, я бы сделал что-то вроде

cat *.py | md5sum 
3
ответ дан 24 November 2019 в 00:41
поделиться

Создайте файл архива tar на лету и направьте его на md5sum :

tar c dir | md5sum

Это даст единственную md5sum, которая должна быть уникальной для вашего файла и настройки подкаталога . На диске не создаются файлы.

160
ответ дан 24 November 2019 в 00:41
поделиться

Технически вам нужно только запустить ls -lR * .py | md5sum . Если вы не беспокоитесь о том, что кто-то изменит файлы и вернет их к исходным датам и никогда не изменит размеры файлов, вывод из ls должен сообщить вам, изменился ли файл. Мой unix-foo слабый, поэтому вам могут потребоваться дополнительные параметры командной строки, чтобы получить время создания и время модификации для печати. ls также сообщит вам, изменились ли права доступа к файлам (и я уверен, что есть переключатели, чтобы отключить это, если вас это не волнует).

2
ответ дан 24 November 2019 в 00:41
поделиться
Другие вопросы по тегам:

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