12

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

mydir1
mydir2
myfile1
myfile2

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

myfile1
myfile2

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

Я прав?

5 ответов5

11

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

rm -r */

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

7

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

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

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

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

6

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

rm -rf ./*/

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

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

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