Как удалить директорию в Linux? :)

В директории (на ext3) сильно много файлов.

1. rm -rf damn_dir (думает час, думает два, думает день и никак не разродится)
2. ls damn_dir | wc -l (см. п.1)
3. find damn_dir | xargs rm -f (думает с час и, забив 16Gb оперативки, уходит в своп и падает в кору)
4. find damn_dir -type f | while read -r; do rm "$REPLY"; done (см. п.3)

Есть другие варианты?
8 февраля в 00:25
8
djem 7,0
Проблема решена хабраюзером xaker1. В общем, удалить файлы было нельзя, если:
— указываемый путь или имя файла содержали в себе "*";
— у find использовался параметр -exec
— использовался xargs
— использовалось перенаправление вывода "|"

Единственно сработавшим вариантом оказался: find . -delete
djem,

отсортировано по дате по оценке
ответы (4)

+10
xaker1 #
find . -delete
Находит и тут же удаляет файлы.
Насколько я помню, остальные варианты сначала подготавливают листинг, и только потом удаляют.
Отлично! Этот вариант заработал. Перебирая варианты, я упустил возможность удаления файлов самим find, одновременно с отсутствием масок в -name. По-отдельности пробовал, конечно.

P.S. Как только find получал в -name хотя бы просто '*', он начинал съедать память.
P.P.S. Получите виртуальный плюс к карме, реальный уже не сделать. Слили карму за этот RTFM. Поделом, так-то. :)
djem, 8 февраля в 09:34
+2
himik #
find damn_dir -name '*' -exec rm {} \;
Это один из испробованных ранее вариантов. Как только find получает маску в качестве пути, — тушите свет. Сработавший вариант в первом ответе! djem, 8 февраля в 09:29
0
prox #
Данное решение основано на запуске команды ls (хотя и с отменой сортировки), в итоге всё сводится к описанному мной п.1 (уже 10 часов как работал и ещё ничего не удалил) djem, 8 февраля в 09:22
0
nuclide #
rm -rf ./damn_dir так удаляет хорошо
Обычно, — да. Но не в этом случае. djem, 8 февраля в 10:28

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.