bash - удалить все каталоги (и содержимое), но не файлы в pwd

19

Я хотел бы удалить все каталоги с pwd, но оставить файлы на pwd в покое. Если содержание моего pwd:

mydir1
mydir2
myfile1
myfile2

тогда я хотел бы остаться только с

myfile1
myfile2

Я предполагаю, что мне нужно использовать rm -r -i

Я прав?

atomh33ls
источник

Ответы:

10

Нет, это даст вам «пропущенный операнд», поскольку вы ничего не указали. Ввод *подсказки также для файлов.

Я бы попробовал:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

Это mindepth 1исключит .из результатов, maxdepth 1исключит попытки выполнить в каталогах, которые в любом случае будут удалены (поэтому создается предупреждение). Но на практике вы можете пропустить их обоих, если согласитесь получить несколько «невинных» предупреждений.

fede.evol
источник
21

Я нашел это где-то:

rm -r */

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

Мартин
источник
1
Это также будет следовать символическим ссылкам, которые, скорее всего, здесь не нужны.
JdeBP
8

использование

rm -rf ./*/

Это позволяет избежать интерактивного режима и удаляет только каталоги в вашем локальном каталоге.

Мы видим
источник
Как указал JdeBP на очень похожий ответ Мартина , если текущий каталог (верхнего уровня) содержит символические ссылки на другие каталоги, они также будут удалены (даже если они не находятся в текущем каталоге или не подчинены ему).
Скотт
3

Примерно так должно работать:

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

-type d ищет только каталоги

Мэтью Уильямс
источник
-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
linux.cnf
источник