Есть папка с большим количестовом фалов. Мне нужно удалить все файлы с дублирующимся содержимым.
Подскажите пожалуйста как правильно почистить дубликаты из папки. Может есть какая то хитрая функция или надо самому открывать каждый файл в цикле и сравнивать его содержимое с другими файлами?
(Добавление)
Делаю так, но удаляются все файлы(
CODE ( htmlphp):
скопировать код в буфер обмена
// путь к папке с файлами с текстами $texts_folder = "texts"; $files1 = scandir($texts_folder); // убираем . и .. $files1 = array_slice($files1, 2); print_r($files1); foreach($files1 as $item) { foreach($files1 as $item1) { if( $item!=$item1 && md5_file($texts_folder."\\".$item1)==md5_file($texts_folder."\\".$item1)) { echo "файлы одинаковы удаляем $item1<br>"; unlink($texts_folder."\\".$item1); } } echo "проверили $item<br><br>"; }
(Добавление)
Вот так вроде работает
CODE ( htmlphp):
скопировать код в буфер обмена
// путь к папке с файлами с текстами $texts_folder = "texts"; $files1 = scandir($texts_folder); // убираем . и .. $files1 = array_slice($files1, 2); print_r($files1); foreach($files1 as $item) { if(!file_exists($texts_folder."\\".$item)) continue; $str = file_get_contents($texts_folder."\\".$item); for($ii=0; $ii<count($files1); $ii++) { $item1 = $files1[$ii]; continue; if( $item!=$item1 && $str==$str1) { echo "файлы одинаковы удаляем $item1<br>"; unlink($texts_folder."\\".$item1); //unset($files1[$ii]); } } echo "проверили $item<br><br>"; }
(Отредактировано автором: 05 Мая, 2020 - 15:43:08)
|