Создайте новый файл, скопируйте строки от старого до нового, и сделайте замену перед записью строк в новый файл.
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 -
GNU find
find /path -type f -name "*.py" -exec md5sum "{}" +;
Если вы хотите, чтобы одна md5sum охватывала весь каталог, я бы сделал что-то вроде
cat *.py | md5sum
Создайте файл архива tar на лету и направьте его на md5sum
:
tar c dir | md5sum
Это даст единственную md5sum, которая должна быть уникальной для вашего файла и настройки подкаталога . На диске не создаются файлы.
Технически вам нужно только запустить ls -lR * .py | md5sum
. Если вы не беспокоитесь о том, что кто-то изменит файлы и вернет их к исходным датам и никогда не изменит размеры файлов, вывод из ls
должен сообщить вам, изменился ли файл. Мой unix-foo слабый, поэтому вам могут потребоваться дополнительные параметры командной строки, чтобы получить время создания и время модификации для печати. ls
также сообщит вам, изменились ли права доступа к файлам (и я уверен, что есть переключатели, чтобы отключить это, если вас это не волнует).