Подтвердить что ты не робот

Как удалить только каталоги и оставить файлы нетронутыми

У меня есть сотни каталогов и файлов в одном каталоге.

Каков наилучший способ удаления только каталогов (независимо от того, есть ли в них каталоги или нет, просто удалите их все)

В настоящее время я использую ls -1 -d */, записываю их в файл и делаю sed, а затем запускаю его. Это довольно длинный путь. Я ищу лучший способ удаления только каталогов

4b9b3361

Ответ 1

В одной строке:

rm -R `ls -1 -d */`

(обратные кавычки)

Ответ 2

Это намного проще и работает для меня:

rm -r */

Ответ 3

find. -maxdepth 1 -mindepth 1 -type d

затем

find. -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

Чтобы добавить объяснение:

find начинается в текущем каталоге из-за . и остается в текущем каталоге только с -maxdepth и -mindepth оба установлены в 1. -type d указывает find чтобы совпадать только с вещами, которые являются каталогами.

find также имеет флаг -exec который может передавать свои результаты другой функции, в данном случае rm. '{}' \; это способ передачи этих результатов. Смотрите этот ответ для более полного объяснения того, что {} и \; делать

Ответ 4

Сначала запустите:

find /path -d -type d

чтобы убедиться, что результат выглядит нормальным, а затем:

find /path -d -type d -exec rm -rf '{}' \;

-type d выглядит только для каталогов, тогда -d обязательно помещает дочерние каталоги перед родителем.

Ответ 5

Простой способ: -

rm -rf 'ls -d */'