Поиск и удаление дубликатов файлов по размеру и дате. помогите!

Тема в разделе "Как сделать...", создана пользователем Revenge-R, 22 мар 2012.

  1. Revenge-R

    Revenge-R Mr. Revenge-R

    Регистр.:
    6 фев 2009
    Сообщения:
    899
    Симпатии:
    319
    Здравствуйте, php кодеры.

    Вообщем помогите реализовать такой скрипт:
    Скрипт должен искать дубликаты файлов по сравнивая по размеру и дате создания... и при нахождении дубликатов удалять из них самый старый по дате создания.
    Например скрипт нашел три одинаковых файла:
    4831f97047.jpg размер: 30056kb дата создания: 2012.03.04 15:31:50
    4822a0b667.jpg размер: 30056kb дата создания: 2012.03.04 15:31:43
    4813e76fb4.jpg размер: 30056kb дата создания: 2012.03.04 15:30:21
    И в итоге скрипт должен оставить самый новый 4831f97047.jpg файл, а остальные дубликаты удалить.

    Помогите пожалуйста реализовать, если это возможно.
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
    $dir='files/';
    $test=1// 1/0
    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $f)
    if(
    $f->isFile()) $arr[$f->getSize()][]=$f->getPathname(); ksort($arr);
     
    foreach(
    $arr as $size=>$a) if(count($a)>1) { $d[]=$size.'b';
      
    $t=array_map('filemtime',$a); $t_m=array_search(max($t),$t);
      foreach(
    $a as $k=>$v$d[]=($k!=$t_m?((empty($test) && @unlink($v))?'file':'test').'_deleted':'skip')."|$v|".date('d.m.Y H:i:s',$t[$k]);
    }
     
    echo 
    '<pre>'.join("\n",$d).'</pre>';
    просмотр планируемых удалений в режиме теста
     
    Revenge-R нравится это.