[identity profile] mx-other.livejournal.com posting in [community profile] useful_faq
Уважаемые,

А нет ли в природе такой программки, которая могла бы УДАЛИТЬ из директории все файлы, которые существуют там только в ОДНОМ экземпляре, и оставить те, которых там по два (с одним и тем же именем, но разными расширениями). Для наглядности:

vasya-0001.abc
vasya-0002.abc
vasya-0002.def

Мне надо, чтобы файл vasya-0001.abc был удалён, а оба файла vasya-0002 остались. Когда файлов 10-20, это легко сделать вручную. Когда их 500-700-1000, это быстро начинает надоедать...

Спасибо!

UPD: Мне подсказали решение, вопрос закрыт! Ещё раз всем спасибо!

Date: 2013-06-20 09:07 pm (UTC)
From: [identity profile] tornader.livejournal.com
там я налажал. правильно так:

  $path = '/path/to/files';
  if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) { 
        $files[] = $file;
    }
    closedir($handle);
	if (count($files) > 0) { 
      asort($files);
  	  $file = $files[0];
	  $cnt = 1;
	  for ($i = 1; $i < count($files); $i++) {
	    if ($file == $files[$i]) {$cnt++;}
		else {$cnt = 0;}
		$file = $files[$i];
		if ($cnt > 2) {unlink($path . '/' . $files[$i]);}
	  }
	}
  }


но задача поставлена некорректно.
по какому закону удалять похожие файлы?
произвольно?

Date: 2013-06-20 09:12 pm (UTC)
From: [identity profile] free-as-freedom.livejournal.com
По-моему, всё ясно - пройтись по всему каталогу и удалить все файлы в одном экземпляре (только с одним расширением). Я так понимаю, что два или больше - нормально.

Date: 2013-06-20 09:15 pm (UTC)
From: [identity profile] tornader.livejournal.com
чушь! я неправильно прочитал задачу.
думал - надо удалять если больше двух!
не исполняйте этот скрипт!!!!!