У меня следующая структура каталогов:

/level1-root
  /level2-a
    /level3-aa
    /level3-ab
  /level2-b
    /level3-ba

Как я могу удалить все каталоги уровня 3 и их содержимое, не касаясь level1 и level2?

1 ответ1

1

Если вы удалите level3-ba то level2-b потеряет одну из своих записей, поэтому он не будет "не касаться" уровня 2.

Если вы хотите удалить только каталоги уровня 3 с их содержимым (то есть не удалять файлы, которые находятся непосредственно в каталогах уровня 2, или что-либо на уровне 2 или уровне 1), то это работа для find -mindepth ... -maxdepth ... -type d ... Безопасная команда:

find /level1-root -mindepth 2 -maxdepth 2 -type d -exec echo rm -rf {} +
  • Почему 2? Потому что ваш уровень 3 на 2 директории глубже, чем /level1-root когда мы начинаем.
  • После того, как вы подтвердите, что получили нужные каталоги, пропустите echo чтобы выполнить фактическое удаление.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .