-5

我需要一种方法(可能在 perl 中)来定位所有未在我的服务器上引用的图像。我正在对我网站上的图像/图标进行整合,并且有太多无法手动筛选的内容 - 一个一个。我需要这个查询来输出一个列表或一个 url 数组到那些不再被引用的图像,以便我可以删除它们。

想法?

4

2 回答 2

1

对于静态网站,您可以结合使用HTML::TokeParser::SimpleFile::Find来提取内容文件中所有标签的src属性。<img>如果您使用复制所有内容wget(参见mirror参考资料man wget),您的生活会更轻松。此外,您可能希望使用CSS::DOM.css解析文件。

接下来,抓取所有图像文件的源,将它们在文件系统中的路径映射到网站 URL。查看哪些不在您从上一个过程中获得的图像 URL 列表中。perlfaq4可能有用。

于 2013-07-25T21:15:32.560 回答
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
于 2013-07-25T21:32:43.497 回答