Al terminar este tutorial sabrás eliminar un archivo, una carpeta vacía, un árbol de directorios completo y archivos filtrados por nombre o por antigüedad, comprobando siempre el objetivo antes de actuar. En Linux no hay papelera en la línea de comandos: un borrado es definitivo. Por eso el método importa tanto como el comando.
Requisitos previos
- Acceso a una shell en una máquina Linux (local o por SSH), por ejemplo un VPS Linux
- Un usuario con permisos de escritura sobre la carpeta en cuestión (o
sudo) - Una copia de seguridad reciente de lo importante
Comprobar el objetivo antes de borrar
Colócate en la carpeta correcta y lista su contenido. Son dos segundos y evitan la mayoría de los accidentes.
Bashpwd ls -la
Si vas a usar un patrón (extensión, prefijo), muestra primero a qué afecta. El comando rm usará exactamente la misma lista.
Bashls -d *.log
Eliminar un archivo
El comando básico es rm.
Bashrm report.txt
Añade -i para que pida confirmación y -v para que muestre lo que elimina.
Bashrm -iv report.txt
Después, comprueba con ls report.txt: el mensaje «No such file or directory» confirma que se ha borrado.
Eliminar varios archivos
Los comodines de la shell permiten apuntar a un conjunto de archivos. Lista primero con ls y borra después.
Bashrm -v *.tmp rm -v photo_{01..05}.jpg
Evita un comodín a secas como rm * en una carpeta de la que no estés seguro. Si el nombre de un archivo empieza por un guion, usa -- para indicar el final de las opciones:
Bashrm -- -strange-file.txt
Eliminar una carpeta vacía
rmdir solo elimina carpetas vacías. Es intencionado: funciona como salvaguarda.
Bashrmdir old_folder
Para eliminar también los directorios padre que queden vacíos:
Bashrmdir -p project/cache/tmp
Eliminar una carpeta y todo su contenido
Aquí hace falta la opción recursiva -r. Calcula antes lo que vas a perder.
Bashdu -sh old_project find old_project -type f | wc -l
Después elimina, con confirmación:
Bashrm -ri old_project
Con miles de archivos, la confirmación se vuelve impracticable. La opción -f la desactiva:
Bashrm -rf old_project
No pongas nunca una variable sin verificar en este comando. Con rm -rf "$DIR"/, si $DIR está vacía, el objetivo es la raíz. En un script, añade set -u o usa "${DIR:?}", que interrumpe la ejecución si la variable está vacía.
Eliminar archivos según su antigüedad
find filtra con criterios precisos (nombre, tipo, edad, tamaño). El principio: ejecutarlo primero sin ninguna acción y añadir -delete después.
Bashfind /var/log/myapp -type f -name "*.log" -mtime +30
Si la lista coincide con lo que esperas:
Bashfind /var/log/myapp -type f -name "*.log" -mtime +30 -delete
-mtime +30 designa los archivos modificados hace más de 30 días. Coloca -delete al final: find evalúa las condiciones de izquierda a derecha, y un -delete situado demasiado pronto lo borra todo.
Borrar de forma más segura un archivo sensible
rm elimina la entrada del archivo, no necesariamente los datos del disco. shred sobrescribe el contenido antes de eliminarlo.
Bashshred -u -v secret.key
Este método tiene límites en SSD, sistemas de archivos con journaling o volúmenes con snapshots, donde pueden quedar datos antiguos. Para datos realmente sensibles, cifrar el disco desde el principio sigue siendo la solución fiable.
Corregir los errores habituales
Permission denied
No tienes permiso de escritura sobre la carpeta padre (es ella la que controla el borrado, no el archivo). Comprueba con ls -ld DIRECTORY y usa sudo si es legítimo:
Bashsudo rm -v /path/to/file
Operation not permitted, incluso con sudo
Lo más probable es que el archivo tenga el atributo inmutable. Consúltalo, retíralo y elimina el archivo.
Bashlsattr file.txt sudo chattr -i file.txt sudo rm file.txt
Argument list too long
El comodín ha generado más argumentos de los que el sistema admite. Usa find, que procesa los archivos de uno en uno:
Bashfind . -maxdepth 1 -type f -name "*.tmp" -delete
Directory not empty o Device or resource busy
Con rmdir, el primer mensaje es normal: la carpeta contiene archivos, incluidos los ocultos (ls -A). Si un punto de montaje o un proceso la está usando, identifícalo con lsof +D DIRECTORY o findmnt y libérala antes de volver a intentarlo.
Para practicar sin riesgo, una instancia desechable es muy cómoda: en un VPS puedes crear una carpeta de pruebas y equivocarte sin consecuencias. Encontrarás más guías de este tipo en la sección de tutoriales.
FAQ
¿Se puede recuperar un archivo borrado con rm?
Rara vez y sin garantías. Herramientas como extundelete o testdisk a veces recuperan datos si dejas de escribir en el disco de inmediato. La única protección fiable es la copia de seguridad.
¿Cuál es la diferencia entre rm -r y rm -rf?
rm -r elimina de forma recursiva, pero pide confirmación en los archivos protegidos contra escritura. rm -rf fuerza el borrado e ignora sin avisar los archivos que no existen. Resérvalo para cuando ya hayas verificado el objetivo.
¿Cómo elimino una carpeta cuyo nombre contiene espacios?
Rodea el nombre con comillas o escapa los espacios: rm -r "My folder" o rm -r My\ folder. Si no, la shell trata cada palabra como un elemento distinto.
¿Existe una papelera en la línea de comandos?
Sí, mediante el paquete trash-cli (comando trash-put), que mueve los elementos a la papelera del usuario en lugar de borrarlos. En un servidor rara vez viene instalado por defecto: acostúmbrate a listar antes de eliminar.