2016-08-19 2 views
-1

У меня есть список 1M folders/directory, который мне нужно удалить в моей системе. Каков наилучший способ сделать это?Удаление большого количества папок за один раз

Я ищу наилучшее возможное решение, которое не будет потреблять много времени, поскольку у меня есть некоторые процессы, которые ждут его завершения.

PS: Я могу поместить все имена папок в файл, если это необходимо, или сделать это в пакетном режиме, если мы не сможем сделать это за один раз.

+0

Это может лучше подходит для [unix.se] (http://unix.stackexchange.com/). –

+2

http://serverfault.com/questions/46852/doing-an-rm-rf-on-a-massive-directory-tree-takes-hours –

ответ

2

Используйте инструмент xargs. Он прочитает все имена папок из файла и вызовет команду - в этом случае rmdir.

xargs rmdir < list_of_folders 

Если вы уверены, что вы можете удалить не пустые папки, используйте rm -r вместо rmdir.

Я думаю, что это о самом быстром, что вы можете получить. rmdir будет действовать так быстро, как может (простой вызов ОС), а с помощью xargs гарантирует, что вы не создадите 1M отдельных процессов.

Вы можете использовать, что в вашем списке нет «вложенных» каталогов. К этому, если у вас есть три папки a/a/b/ и a/c/ и b/ и c/ являются единственными записями в a/, то вы можете опустить a/b/ и a/c/ и просто позвонить rm -r a/. Но не стоит проверять это на ls, так как ls также будет стоить время, которое вы, вероятно, не сэкономите.

0

Команда rm прекрасно справляется с этим. Просто дайте ему список папок, которые вам нужно удалить (shell expansions может сэкономить вам некоторое время на этот счет), и не забудьте установить переключатель -r.

Exemple используя некоторые общие разложения:

rm -r folder_a src/dir_* app_{logs,src,bin} 
+0

Он сказал, что у него есть список из миллиона каталогов. Из-за ограниченной длины аргументов программы ('xargs --show-limits/dev/null 'внутри bash). 'xargs' будет обрабатывать это и запускать как можно меньше' rm ', но сколько угодно. –

+0

Ah dang, я ошибаюсь 1M каталогов для 1K каталогов ... Не совсем то же самое, – Likeyn

Смежные вопросы