因为整理图标, 所以需要去除重复图片的功能. 通过md5来判断是否重复. 最开始, 我用md5sum工具求md5, 然后再用PHP读取结果去重. 后来一想, 为什么不完全用PHP来做呢? 可以节省大量进程开销. 简单几行代码, 就实现了这个功能.
文件数: 80510, 大小: 452,496,873 字节
只查找不删除的速度:
第一次耗时: 122s
第二次耗时: 44s
第三次耗时: 44s
在查找多次之后, 立即查找并删除的速度:
耗时: 83秒, 删除了54406个文件
<?php exec("find . -type f", $lines); $arr = array(); $del = array(); $n = 0; foreach($lines as $line){ $line = trim($line); if(!$line){ continue; } $n ++; $md5 = md5_file($line); if(isset($arr[$md5])){ $del[] = $line; //echo "$n del $line\n"; unlink("{$line}"); }else{ $arr[$md5] = 1; } } echo "del " . count($del) . " files\n"; //echo join("\n", $del);
就是03下的IIS+ASPX与LAMP能否共存? Reply
搞个LAMP直接搭建? Reply
2. 文件太大(文件数量估计在100万没问题), 可能file_get_contents会吃不消(更新, 改成md5_file函数).
3. 其实不用PHP, 用Python, awk, C#, Java等来做, 应该都差不多一样简单.
搭建PHP环境非常简单, Windows下解压即用, Linux下apt-get install即可. 倒是获取所有文件的列表要费一些劲. Reply
删错了咋办。。。。
我有接近3T的东西要整理,里面就有重复的,还有电影。。。。
想整理整理呢。。没找到合适的方案。。。 Reply
本机要运行的话要架个PHP运行环境? Reply