Я выполнил следующую команду из этих папок журналов. Но похоже, что каждая папка займет бесконечное время.
найти . -type f -exec rm -v {} \;
rwxrwxr-x 2 root root 77881344 Mar 16 03:06 logs.123
drwxrwxr-x 2 root root 105709568 Nov 14 20:09 logs_15Nov2011
drwxrwxr-x 2 root root 6852608 Aug 1 2011 logs2
drwxrwxr-x 2 root root 286191616 Nov 2 08:40 logs_2Nov
drwxrwxr-x 2 root root 25206784 Nov 10 04:04 logs_del
drwxrwxr-x 4 root root 2686976 Oct 6 01:56 logs_delete
drwxrwxr-x 2 root root 4096 May 11 2011 logsMay112011
drwxrwxr-x 2 root root 69087232 Aug 29 2011 logs_old
drwxrwxr-x 7 root root 382480384 May 9 2011 logs.old905
drwxrwxr-x 2 root root 4096 May 11 2011 logsTR1218
Есть ли какие-нибудь предложения по удалению всех этих журналов лучше и быстрее, чем это?
В GNU find есть опция -delete, которая всегда безопасна:
find . -type -f -delete
Как уже упоминалось в другом месте, вы также можете использовать xargs, но будьте очень осторожны при его использовании.
find . -type f -print0 | xargs -0 rm -vf
Все остальные ответы предполагают, что вы хотите сохранить каталоги, но из исходного сообщения не ясно, что вы делаете; более того, даже если вы хотите сохранить структуру, вам все равно придется удалить и воссоздать каталоги, потому что файлы каталогов стали очень большие - они не сжимаются, когда вы их опорожняете, а их размер значительно замедлит работу с ними в будущем.
Так ты считал просто
rm -rf log*
Если вы можете справиться с множеством ошибок, когда rm не удаляет каталоги, вы можете подойти к проблеме с другой стороны.
for dir in $(find . -type d)
do
rm $dir/*
done
Пытаться
find . -type f | xargs rm -vf
Кроме переформатирования раздела, я не вижу более быстрого способа удалить все файлы.
Проблема в том, что у вас в этих каталогах огромное количество файлов (размер в ls -l
результат, который вы предоставляете, огромен!). Для каждого rm
, файловая система должна делать следующее:
Даже если ты rm
каталог, вы избавляетесь только от шага № 2 выше, потому что вам все равно нужно запросить каталог и уменьшить количество ссылок. Запросы к каталогу можно оптимизировать для получения более одного номера индексного дескриптора за раз, но во всех случаях для каждого удаляемого файла файловая система должна проверять индексный дескриптор на предмет количества ссылок и обновлять индексный дескриптор (или отмечать его для удаления).
Другими словами, эта операция O(n)
на количество файлов для удаления, которое в вашем случае очень велико.
Если вы не можете отформатировать свой раздел, что, я думаю, ваш случай ;-), просто запустите задачу в фоновом режиме или в экран и будьте терпеливы.
Другое решение - сделать резервную копию файлов, которые вы хотите сохранить, отформатировать раздел и восстановить файлы. Возможно, это будет быстрее, чем удаление всех файлов, но требует ли это больше времени ( find...rm
при необходимости можно забыть в фоновом режиме на много дней ...).