Я хочу удалить папку, содержащую тысячи файлов и папок. Если я использую Windows Explorer для удаления папки, это может занять 10-15 минут (не всегда, но часто). Есть ли в Windows более быстрый способ удаления папок?
Другие детали:
Возможно, rm -rf в cygwin быстрее, а возможно, Linux live cd rm -rf еще быстрее.
используя cygwin ls DIRECTORY> list_files и выполните итерацию по list_files и используйте rm -rf (работает с большим файловым пулом 1 ТБ и хорошо работает)
Ребята, я не уверен, что это тот же опыт, что и у всех ... но если я удалю большую папку, а затем отменю ее, пока она удаляет, папка исчезнет, а корзина пуста. Не уверен, почему это работает, но для меня это работает.





rmdir /s /q folder
powershell -Command "Remove-Item -LiteralPath 'folder' -Force -Recurse"
Обратите внимание, что в большинстве случаев del и rmdir оставят вам оставшиеся файлы, и Powershell удастся удалить их.
Кстати, вы также можете использовать rd / q / s <foldername>, однако, хотя это быстрее, чем графическое представление в проводнике Windows, оно все равно займет время длинная - MS использует алгоритм Schlemeil the Painter (joelonsoftware. com / article / fog0000000319.html) в любое время, когда dir или del выполняется
Согласитесь с TFD - кто-то должен отредактировать этот пост и изменить DOS на "командную строку".
Папка rm -rf работает очень быстро, если у вас установлен Cygwin.
Раньше я использовал это, но я нашел комбинацию del + rmdir почти в три раза быстрее, чем простой rmdir. Смотрите мой ответ: stackoverflow.com/questions/186737/…
Предложение Синан - самое быстрое. Установите cygwin.com, затем используйте rm -rfv имя_папки из командной строки cygwin.
+1 на Cygwin, который разъединяет структуру, немного быстрее, чем это делают инструменты Windows, хотя и не так безопасно.
Как упоминал Хьюго, было обнаружено, что del + rmdir может быть быстрее: superuser.com/a/289399/155435
он не может удалять файлы с очень длинными именами.
Спасибо, Хьюго, я только что нашел папку Drop моей сборки, которая подвергается ядерной атаке при восстановлении примерно через 8+ минут, только что была удалена с помощью вашей команды менее чем за 50 секунд. Что потрясающе! Не могу дождаться обновления наших сценариев сборки. Ваше здоровье!
Оболочка Windows Git BASH rm -fr <folder> также работает довольно быстро.
Еще +1 для Cygwin: путь быстрее
Я бы не назвал 100 МБ / мин сверхбыстрым, но все же это улучшение в проводнике Windows.
используйте командную строку, как предлагается. Некоторое время назад я понял, почему проводник такой медленный, он дает вам оценку того, сколько времени потребуется, чтобы удалить файлы / папки. Для этого он должен сканировать количество предметов и их размер. На это уходит много времени, отсюда и нелепое ожидание с большими папками.
Кроме того, проводник остановится, если возникнет конкретная проблема с файлом,
а для удаления большого количества папок вы также можете создать командный файл с помощью команды spdenne.
1) создайте текстовый файл со следующим содержимым, заменив имена папок в кавычках именами ваших папок:
rmdir /s /q "My Apps"
rmdir /s /q "My Documents"
rmdir /s /q "My Pictures"
rmdir /s /q "My Work Files"
2) сохраните командный файл с расширением .bat (например deletefiles.bat)
3) откройте командную строку (Пуск> Выполнить> Cmd) и выполните командный файл. вы можете сделать это из командной строки (заменив букву диска X):
X:
deletefiles.bat
Да, у меня есть похожий командный файл, но я обнаружил, что комбинация del + rmdir самая быстрая: stackoverflow.com/questions/186737/…
используйте бесплатный инструмент fastcopy. у него есть опция удаления, которая намного быстрее, чем способ удаления файлов в Windows.
Я попробовал FastCopy. не уверен, что это быстрее, чем Windows, я удалял только 92 файла в секунду. Учитывая, что я перестал считать количество файлов размером более 250 КБ, мне придется вечно пользоваться им ... Ну что ж. Каждый файл имеет размер всего 20 байт. Чертовы файлы сессий PHP.
попробуйте бесплатный инструмент с открытым исходным кодом RapidDeletePro: github.com/mhisoft/RapidDeletePro
Худший способ - отправить в корзину: их все равно нужно удалить. Следующее худшее - shift + delete в проводнике Windows: он тратит массу времени на проверку содержимого перед тем, как что-либо удалять.
Лучше всего использовать rmdir /s/q foldername из командной строки. del /f/s/q foldername тоже хорош, но он оставляет позади структуру каталогов.
Лучшее, что я нашел, - это двухстрочный пакетный файл с первым проходом для удаления файлов и выводом на нуль, чтобы избежать накладных расходов на запись на экран для каждого отдельного файла. Затем второй проход очищает оставшуюся структуру каталогов:
del /f/s/q foldername > nul
rmdir /s/q foldername
Это почти в три раза быстрее, чем один rmdir, на основе тестов времени с зашифрованным диском Windows XP, удаление ~ 30 ГБ / 1 000 000 файлов / 15 000 папок: rmdir занимает ~ 2,5 часа, del+rmdir - ~ 53 минуты. Больше информации на Суперпользователь.
Для меня это обычная задача, поэтому я обычно перемещаю то, что мне нужно удалить, в C: \ stufftodelete и помещаю эти команды del+rmdir в пакетный файл deletestuff.bat. Он запланирован на ночное время, но иногда мне нужно запускать его днем, поэтому чем быстрее, тем лучше.
Техническую документацию для команды del можно найти в здесь. Дополнительная информация об использованных выше параметрах:
/f - Принудительно (т.е. удалять файлы, даже если они только для чтения)/s - Рекурсивные / включаемые подпапки (это определение из SS64, поскольку technet просто указывает «указанные файлы», что бесполезно)./q - Тихо (т.е. не запрашивать подтверждение у пользователя)Документация для rmdirздесь. Параметры:
/s - рекурсивный (т.е. такой же, как параметр del / s)/q - Тихий (т.е. такой же, как параметр del / q)@ Хьюго, вопрос: в приведенных выше тестах по времени для одного или обоих методов вы подсчитывали файлы непосредственно перед запуском метода? Я спрашиваю, потому что, возможно, содержимое папки уже находится в кеше файлов ОС. Спасибо!
@WilliamC: я точно не помню, но для повторных удалений с тем же содержимым я буду считать непосредственно перед только одним удалением и не буду повторять его для других удалений (поскольку я уже знаю числа).
Я попробовал это сегодня (правда, на меньшем наборе данных) и получил противоположный результат: использование только rmdir было на 30% быстрее (3:17), чем использование del, а затем rmdir (2:15).
@HarryJohnston: Интересно. У меня было огромное количество файлов и папок, возможно, это зависит от этих факторов. (PS вы случайно номера поменяли?)
@ Хьюго: да, я сделал - да! del / rmdir 3m15s, rd 2m15s. Вы говорите, что в некоторых случаях вы могли сканировать дерево каталогов (для подсчета файлов) перед вашими исходными тестами; в недавней работе, которую я выполнял, я обнаружил, что предварительное сканирование значительно ускорило аналогичные операции, поэтому возможно, что это значительно исказило ваши результаты. Если у меня будет возможность, я проведу еще один тест с большим количеством файлов.
Также возможно, что поведение зависит от ОС (я использовал Windows 7) и / или шифрования диска (мой диск не был зашифрован).
Мне нужно было «Запуск от имени администратора», чтобы заставить это работать, в зависимости от диска.
Как насчет использования Cygwin. Я знаю, что это слой поверх Windows, но может ли мир Linux помочь нам лучше обслуживать?
Очень быстро, хотя и давится на слишком длинных путях, но вы можете использовать total commander shift + f8 для остальных вещей.
Я использую rmdir /s/q foldername > nul с большим успехом. Если он жалуется на «каталог не пустой» (редко), просто запустите команду еще раз.
Это отлично сработало для меня. Он удалил около 16 ГБ, пару сотен тысяч файлов за секунды в Windows 7. ОС какое-то время зависала на этом, прежде чем я сдался и начал искать здесь.
Действительно круто. Могу ли я распечатать прогресс во время удаления?
@AndroDev Нет, это только для скорости. Расчеты прогресса, вероятно, являются частью того, почему проводник Windows работает так медленно.
Я создал небольшой пакетный инструмент. gist.github.com/Gaspadlo/4c22d07f5ee92a6bd91f379953664aa6 Он содержит запрос подтверждения с повторением пути, и в конце он распечатывает, когда удаление началось и когда оно закончилось.
Отличное и элегантное решение, могу ли я предложить оптимизировать команду с помощью амперсанда командной оболочки: запускать команды последовательно: del /f/s/q foldername > nul & rmdir /s/q foldername или запускать команды последовательно, только если первая команда выполнена успешно. del /f/s/q foldername > nul && rmdir /s/q foldername
Если вы используете cmd.exe, также настройте его приоритет в диспетчере задач. Приоритет «в реальном времени» был для меня НАМНОГО быстрее обычного.
пс. хорошее объяснение и решение для интеграции оболочки здесь: mattpilz.com/fastest-way-to-delete-large-folders-windows
Я обнаружил, что приостановка индексирования Windows перед запуском операции del + rmdir помогает еще больше ускорить задачу удаления. Заметил, что индексатор использует значительную часть полосы пропускания ввода-вывода моего диска (в диспетчере задач), скорее всего, с учетом потери файлов.
del лучше, потому что он позволяет использовать подстановочные знаки. rmdir - нет.
Попробуйте Shift + Delete. Сделал для меня 24000 файлов за 2 минуты.
См. Выше - избегает корзины, но все еще медленнее, чем в командной строке.
Этот метод удаляет файлы напрямую, а не перемещает их в корзину, но проводник по-прежнему будет пытаться подсчитать все файлы, чтобы получить оценку, что занимает много времени для больших папок (> 100k файлов)
какой был средний размер файла?
@your_boy_gorja проблема не в среднем размере файла, а в количестве файлов в папке. Когда вы удаляете с помощью проводника, проводнику необходимо прочитать все файлы, чтобы получить размер, и попытаться сделать оценку.
@uceumern да, этот счетчик, который он делает, смешон с папкой с большим количеством файлов (~ 40 ГБ с 1 млн файлов)
Также здесь, у суперпользователя, спрашивают: superuser.com/questions/19762/mass-deleting-files-in-windows /…