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

11

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

mydir1
mydir2
myfile1
myfile2

eu gostaria de ficar com apenas

myfile1
myfile2

Eu suponho que preciso usar rm -r -i

Estou correto?

    
por atomh33ls 07.02.2014 / 16:33

4 respostas

6

Não, isso daria a você "operando ausente", já que você não especificou nada. Colocar um "*" também solicitaria arquivos.

Eu tentaria:

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

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

    
por 07.02.2014 / 16:42
11

Encontrei este em algum lugar:

rm -r */

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

    
por 07.02.2014 / 16:42
4

Use

rm -rf ./*/

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

    
por 08.02.2014 / 17:15
3

Algo como isso deve funcionar:

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

-tipo d procura apenas diretórios

    
por 07.02.2014 / 16:45