Español

Eliminar un archivo y una carpeta en Linux desde la línea de comandos

4 min
Hosting VPS/VDS

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.

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

Bash
ls -d *.log

Eliminar un archivo

El comando básico es rm.

Bash
rm report.txt

Añade -i para que pida confirmación y -v para que muestre lo que elimina.

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

Bash
rm -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:

Bash
rm -- -strange-file.txt

Eliminar una carpeta vacía

rmdir solo elimina carpetas vacías. Es intencionado: funciona como salvaguarda.

Bash
rmdir old_folder

Para eliminar también los directorios padre que queden vacíos:

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

Bash
du -sh old_project find old_project -type f | wc -l

Después elimina, con confirmación:

Bash
rm -ri old_project

Con miles de archivos, la confirmación se vuelve impracticable. La opción -f la desactiva:

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

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30

Si la lista coincide con lo que esperas:

Bash
find /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.

Bash
shred -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:

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

Bash
lsattr 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:

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

Mantente al día con las últimas ofertas, descuentos y promociones especiales.

Ver promociones

Utilizamos cookies

Utilizamos cookies analíticas para mejorar su experiencia en nuestro sitio. No vendemos datos a terceros. Más información en nuestra política de privacidad.