Ruby:
#!/usr/bin/env ruby
require 'digest/md5'
Dir.glob('**/*') do |f|
next unless File.file? f
next if /\.md5sum-[0-9a-f]{32}/ =~ f
md5sum = Digest::MD5.file f
newname = "%s/%s.md5sum-%s%s" %
[File.dirname(f), File.basename(f,'.*'), md5sum, File.extname(f)]
File.rename f, newname
end
Обрабатывает имена файлов с пробелами, без расширения и уже хэшированные.
Игнорирует скрытые файлы и каталоги - добавьте File::FNM_DOTMATCH
в качестве второго аргументаglob
, если это желательно.