Назад | Перейти на главную страницу

Как удалить каталог, в котором много подкаталогов?

У меня есть каталог с множеством подкаталогов. Я пробовал делать

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!».

Вероятно, это также проблема, с которой вы столкнулись здесь - есть символические ссылки, которые либо ведут в очень большие каталоги, либо символические ссылки, которые входят в какой-то бесконечный цикл. Не нужно так много времени, чтобы удалить небольшой каталог, в который не нужно много рекурсии.