Necesito eliminar todos los archivos, excepto uno (su nombre está definido), de un directorio determinado.
¿Cómo puedo hacer esto desde la terminal en OS X? ¿Puedo hacer esto con un solo comando?
Respuesta1
shopt -s extglob && rm !(non_delete_file)
o
rm -f !(non_delete_file)
o
find . ! -name non_delete_file -delete
Tenga en cuenta que el comando anterior find
funcionará de forma recursiva: eliminará todos los archivos y directorios en el directorio actual y en todos los subdirectorios. Si eso es un problema, use -type f
(para hacer coincidir solo archivos) y -maxdepth 1
(para hacer coincidir cosas solo en el directorio actual, ignorando los subdirectorios)
find . -type f -maxdepth 1 ! -name non_delete_file -delete
Respuesta2
- mueva el archivo que desea conservar a algún lugar fuera del directorio
- elimina todo lo que hay en el directorio usando tu método favorito
- mueva el archivo que desea conservar nuevamente al directorio
No es exactamente "alta tecnología", pero es mucho más difícil eliminar accidentalmente el archivo que desea conservar si utiliza este método.
Obviamente, este enfoque falla si el archivo necesita existir continuamente en el directorio mientras ocurre toda la matanza.
Respuesta3
Intentar
rm `ls | grep -v '^defined$'`