Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.8960
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 03.09.2013, 15:19   #1
Avi
Senior Member
 
Аватар для Avi
 
Регистрация: 01.07.2012
Сообщений: 248
Бабло: $93280
По умолчанию Удалить всё к ебеням - окромя списка.

Задача такая:

На винте есть много не нужных файлов.
Среди них есть те,которые понадобятся потом.
Есть отдельный список этих файлов в текстовом файле.
(примерно 14,000 файлов)

Как программно пробежать по всем папкам и удалить к ебеням все файлы,окромя тех что в списке.
Древо директорий нужно сохранить.

п.с. виндовс
Avi вне форума  
Старый 03.09.2013, 17:51   #2
alkoustas
Ебланнед
 
Регистрация: 08.04.2011
Адрес: Украина, Севастополь
Сообщений: 633
Бабло: $144424
По умолчанию

тотал командер

переходим в самую верхнюю директорию
ctrl + B
загрузить выделение из файла
инвертировать
F8

как-то так
alkoustas вне форума  
Старый 03.09.2013, 20:34   #3
ОБФ
Ебланнед
 
Регистрация: 13.08.2013
Сообщений: 55
Бабло: $80975
По умолчанию

в винде может с помощью архиватора можно
они умеют исключать файлы по маске, но может и конкретный список сумеют
ну или архивнуть всё и перетащить на линух, там всё сделать и вернуться в ад на винду
ОБФ вне форума  
Старый 03.09.2013, 20:52   #4
Strikelol
Senior Member
 
Регистрация: 31.03.2011
Сообщений: 3,056
Бабло: $632595
По умолчанию

имхо сама идея лютая - как топором яйца брить.
Лучше скопировать нужные файлы - и если успешно, удалить руками. Посмотри на экранирование \ в своем файле
я не тестил, но думаю что будет работать

Код:
set_time_limit(0);
$root_dir = "D:\\folder1\\";
$new_dir = "D:\\folder2\\";

$list = file("list.txt", FILE_INGORE_NEW_LINES);
foreach($list as $single_file) {
	preg_match("/(.*?)\//", $single_file, $out1);
	if(!is_dir($new_dir.$out[1])) {
		mkdir($new_dir.$out[1], 0, true);
		copy($root_dir.$single_file, $new_dir.$single_file);
	}
}
// если скопировалось - потом удалить $root_dir
Strikelol вне форума