Delete all but one file
A veces, un directorio se llena de archivos temporales, pruebas o restos de comandos mal ejecutados. Si lo que usted desea es eliminar todo excepto un archivo específico, como por ejemplo documento-ejemplo, Bash ofrece una forma rápida y segura de hacerlo.
Paso a paso
- Abra la terminal y ubíquese en el directorio donde está el archivo que quiere conservar.
- Ejecute el siguiente script, que recorre todos los archivos y carpetas del directorio actual y elimina todo lo que no sea documento-ejemplo.
- Si prefiere verificar primero qué se eliminará sin borrar nada, puede hacer una prueba con:
Bloque de comandos
#!/usr/bin/env bash
# Script para eliminar todo excepto 'documento-ejemplo'
for item in *; do
if [[ "$item" != "documento-ejemplo" ]]; then
rm -rf -- "$item"
fi
done
Buenas prácticas
Siempre pruebe con echo antes de ejecutar rm -rf, para evitar borrar algo importante.
- Use comillas alrededor de las variables (”\$item”) para evitar errores con nombres que contengan espacios o caracteres especiales.
- Si desea conservar varios archivos, puede modificar la condición, por ejemplo:
- No ejecute este tipo de comandos como superusuario (sudo) a menos que sea estrictamente necesario.
FAQ
¿Puedo usar este script en subdirectorios?
No directamente. El script actúa solo en el directorio actual. Para aplicar recursivamente, puede combinarlo con find o un bucle que explore subdirectorios.
¿Qué pasa si el archivo se llama distinto?
Solo debe cambiar el nombre dentro de la condición != "documento-ejemplo".
¿Y si quiero conservar un tipo de archivo, como todos los .txt?
Reemplace la condición con algo como: