bash - remove todos os diretórios (e conteúdos), mas não os arquivos no pwd


19

Gostaria de remover todos os diretórios do pwd, mas deixar os arquivos no pwd em paz. Se o conteúdo do meu pwd for:

mydir1
mydir2
myfile1
myfile2

então eu gostaria de ficar com apenas

myfile1
myfile2

Eu presumo que eu preciso usar rm -r -i

Estou correcto?

Respostas:


10

Não, isso lhe daria "operando ausente", pois você não especificou nada. Colocar um *prompt também para arquivos.

Eu tentaria:

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

O mindepth 1excluirá .dos resultados, o maxdepth 1excluirá a tentativa de executar os diretórios que serão excluídos de qualquer maneira (portanto, criando um aviso). Mas, na prática, você pode deixar os dois de fora se concordar em receber alguns avisos "inocentes".


21

Encontrei este em algum lugar:

rm -r */

Parece o caminho mais fácil. Com o seu exemplo, você teria que confirmar cada caso, se você tiver 5 arquivos, tudo bem, mas com estruturas de arquivos maiores, um modo interativo não é o caminho a seguir ... Apenas como sugestão, se for uma informação importante, faça uma cópia de segurança...


1
Isso também seguirá links simbólicos, o que provavelmente não é desejado aqui.
JdeBP

8

Usar

rm -rf ./*/

Isso evita o modo interativo e exclui apenas os diretórios do diretório local.


Como o JdeBP apontou na resposta muito semelhante de Martin , se o diretório atual (de nível superior) contiver links simbólicos para outros diretórios, eles também serão excluídos (mesmo que não estejam ou estejam subordinados ao diretório atual).
Scott

3

Algo assim deve funcionar:

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

-type d procura apenas diretórios


-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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.