
Supongamos que en el directorio actual hay varios subdirectorios y uno se llama A.
¿Cómo eliminar todos los subdirectorios excepto A con Bash?
Respuesta1
Bash tiene globbing extendido (primero prueba, luego elimina el eco):
shopt -s extglob
echo rm -rf !(A)
Respuesta2
find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;
Respuesta3
Qué pasa:
mv A /tmp/
rm * -rf
mv /tmp/A .
Esto evita algo del "miedo" de un error tipográfico en los otros comandos.
Por favor tenga cuidadono estar en la carpeta raíz (/) cuando se ejecuta el comando rm * -rf anterior.
Respuesta4
Normalmente hago esto elaborando un comando ls que lo haga bien primero. No estoy en una máquina Unix, sino algo como:
ls -lda "[^A]"
Una vez que lo hagas bien, canalízalo a un comando.
ls -lda "[^A]" | xargs rm-rf
Siéntete libre de editar arriba si mi expresión regular es incorrecta...