Exclua todos os subdiretórios, exceto um

Exclua todos os subdiretórios, exceto um

Suponha que no diretório atual existam vários subdiretórios e um seja chamado A.

Como deletar todos os subdiretórios exceto A com Bash?

Responder1

Bash estendeu o globbing (primeiro teste e depois remova o eco):

shopt -s extglob
echo rm -rf !(A)

Responder2

find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;

Responder3

A respeito:

mv A /tmp/
rm * -rf
mv /tmp/A .

Isso evita um pouco do "assustador" de um erro de digitação nos outros comandos.

Por favor, esteja cientepara não estar na pasta raiz (/) ao executar o comando rm * -rf acima.

Responder4

normalmente faço isso elaborando um comando ls que acerta primeiro. não estou em uma máquina unix, mas algo como:

ls -lda "[^A]"

Depois de acertar, canalize para um comando

ls -lda "[^A]" | xargs rm-rf

Sinta-se à vontade para editar acima se eu tiver errado minha expressão regular ...

informação relacionada