Удаление каталога должно работать. Вы можете столкнуться с проблемами, если вы пытаетесь удалить отдельные файлы, потому что их так много. Вы не используете rm -rf dirname/*
вы?
Я предполагаю, что вы теряете соединение ssh из-за неактивности, вы уверены, что команда не была выполнена правильно на сервере?
В любом случае, возможный обходной путь - использовать nohup:
nohup rm -rf dirname
Вы можете запустить команду и выйти, она продолжится в фоновом режиме.
ОБНОВИТЬ:
Я нашел этот вопрос в U & L.SE, я рекомендую вам взглянуть на него. К сожалению, я не могу воссоздать вашу проблему. Я создал каталог с 2516007 файлами и всегда мог удалить его, используя rm -rf
:
$ mkdir ha
$ for X in $(seq 1 10000);do touch {1..10000}_$X; done
$ ls -f ha | wc -l
2516007 <= I stopped before the for loop finished, but this should be enough
$ time rm -rf ha/
real 23m11.695s
user 0m3.540s
sys 0m42.891s
Итак, для удаления ~ 2 миллионов пустых файлов потребовалось 20 минут. Кажется разумным, что может потребоваться несколько часов, чтобы удалить огромное количество непустых файлов.
В любом случае, некоторые из предложений по вопросу U & L должны помочь. Конкретно этот:
find /delb -type f --delete
или этот (немного измененный от оригинала)
find /delb -type f -print0 | xargs -0r rm -f
Наконец, уловка, которую вы могли бы сделать, это удалить несколько файлов одновременно. Если вы знаете, что некоторые имена файлов начинаются со строки "foo", другие "bar" и т.д., Сделайте следующее:
rm -rf /delb/foo*
rm -rf /delb/bar*
и так далее. Вы также можете попробовать что-то вроде этого:
for n in {a..z}; do rm -rf /delb/$n*; done
for n in {A..Z}; do rm -rf /delb/$n*; done
for n in {0..9}; do rm -rf /delb/$n*; done
Эта последняя команда будет последовательно удалять каждое имя файла, начиная с каждой буквы алфавита, а затем любые имена файлов, начинающиеся с цифр.