unsed 画像の検索は、CSS よりも簡単です。
*.jpg *.png *gif を glob で検索し、それらのファイル名を辞書または配列に配置し、それらのファイル名を 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: を使用しました。なぜなら、私の Windows バージョンの Ruby ではfileutils
正常makedirs
で動作しないからです。mv
また、私はルビーが苦手なので、使用する前に再確認してください。
これは、Windows のサンプル Rails フォルダーのルート フォルダーで実行したサンプル結果です。
---\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