У меня есть каталог с множеством подкаталогов. Я пробовал делать
rm -rf mydirectory
но он все еще работал через 1 час. Я попытался получить количество подкаталогов с помощью
ls -l . | egrep -c '^-'
но это не закончилось через 30 минут.
Есть ли более быстрый способ рекурсивно удалить весь каталог?
/usr/bin/find /mydir_with_many_subdirs -exec rm {} \;
вы также можете фильтровать
/usr/bin/find /mydir_with_many_subdirs -type f -exec rm {} \; -- will delete all files
/usr/bin/find /mydir_with_many_subdirs -mtime +10 -exec rm {} \; -- will delete dirs and files older then 10
man find предоставит больше фильтров, которые вы можете применить.
Это должно работать, но я бы не стал использовать параметр -f. Я бы не хотел запускать эту команду как root! Если есть какие-либо символические ссылки, указывающие на / var / log или / usr / lib, то вы столкнетесь с проблемами быстрее, чем вы можете сказать «OMGWTF!».
Вероятно, это также проблема, с которой вы столкнулись здесь - есть символические ссылки, которые либо ведут в очень большие каталоги, либо символические ссылки, которые входят в какой-то бесконечный цикл. Не нужно так много времени, чтобы удалить небольшой каталог, в который не нужно много рекурсии.