Eliminar todos los subdirectorios excepto uno

Eliminar todos los subdirectorios excepto uno

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...

información relacionada