我需要一种方法(可能在perl中)来定位我的服务器上没有引用的所有图像。我正在对我的网站上的图像/图标进行整合,并且有太多的东西需要一个接一个地手工筛选。我需要这个查询来输出一个列表或一个url数组到那些不再被引用的图像,以便我可以删除它们。
思想?
答案 0 :(得分:1)
对于静态网站,您可以将HTML::TokeParser::Simple与File::Find结合使用,以提取内容文件中所有src
代码的<img>
属性。如果您使用wget
复制所有内容,您的生活会更轻松(请参阅mirror
中的man wget
)。此外,您可能希望使用CSS::DOM解析.css
个文件。
接下来,抓取所有图像文件的源,将其在文件系统中的路径映射到网站URL。查看哪些不在上一过程中获得的图像URL列表中。 perlfaq4可能有用。
答案 1 :(得分:0)
我要做的是提供所有图片的列表。解析所有文档以获取图像。比较清单。
为简单起见,我假设所有图像都是唯一命名的,并且不需要路径。我还假设所有代码都在使用中。
在Bash中(需要大量的tweeking,未经测试)
cd into image directory
find path_to_image_directory -name "*.jpg" | grep -o "\b\w*\.jpg" | sort -u > all_pics.txt
# do simular for gif and png
grep -rio "\b\w*\.gif\|.png|.gif\b" path_to_source | sort -u > used_pics.txt
grep -Fxv -f all_pics.txt used_pics.txt > unused_images.txt
while read line
do
find . -name $line -exec rm -rf {} \;
done < unused_images.txt