Поиск незанятых изображений должен быть проще, чем CSS.
Просто найдите * .jpg * .png * gif с глобусом, поместите эти имена в словарь или массив и найдите эти имена снова в файлах html, css, js, удалите имя файла, если оно найдено, и вы получите неиспользуемый список, и переместите эти изображения в другую папку с такой же структурой каталогов (на всякий случай будет полезно восстановить)
В основном так и, конечно, для имен файлов, которые зашифрованы / закодированы / скрыты не будут работать.
require "fileutils"
img=Dir.glob("**/*.jpg")+Dir.glob("**/*.png")+Dir.glob("**/*.gif")
data=Dir.glob("**/*.htm*")+Dir.glob("**/*.css")+Dir.glob("**/*.js")
puts img.length.to_s+" images found & "+data.length.to_s+" files found to search against"
content=""
data.each do |f|
content+=File.open(f, 'r').read
end
img.each do |m|
if not content=~ Regexp.new("\\b"+File.basename(m)+"\\b")
FileUtils.mkdir_p "../unused/"+File.dirname(m)
FileUtils.mv m,"../unused/"+m
puts "Image "+m+" moved to ../unused/"+File.dirname(m)+" folder"
end
end
PS: я использовал fileutils
, потому что обычные makedirs
и mv
не работают в моей версии ruby для Windows
И я не очень хорошо разбираюсь в рубине, поэтому, пожалуйста, перепроверьте его, прежде чем использовать его.
Вот пример результатов, которые я запустил в корневой папке с образцами рельсов в моей Windows
---\ruby>ruby img_coverage.rb
5 images found & 12 files found to search against
Image depot/public/images/test.jpg moved to ../unused/depot/public/images folder