Cómo eliminar archivos y directorios en la terminal de Linux

Los comandos rm y rmdir eliminan archivos y directorios en Linux, macOS y otros sistemas operativos similares a Unix. Son similares a los comandos del y deltree en Windows y DOS. Estos comandos son muy poderosos y tienen bastantes opciones.

Es importante tener en cuenta que los archivos y directorios eliminados con rm y rmdir no se mueven a la Papelera. Se eliminan inmediatamente de su computadora. Si elimina archivos accidentalmente con estos comandos, la única forma en que podrá restaurarlos es desde una copia de seguridad.

Cómo eliminar archivos con rm

El caso más simple es eliminar un solo archivo en el directorio actual. Escriba el comando rm, un espacio y luego el nombre del archivo que desea eliminar.

rm file_1.txt

Si el archivo no está en el directorio de trabajo actual, proporcione una ruta a la ubicación del archivo.

rm ./path/to/the/file/file_1.txt

Puede pasar más de un nombre de archivo a rm. Al hacerlo, se eliminan todos los archivos especificados.

rm file_2.txt file_3.txt

Se pueden usar comodines para seleccionar grupos de archivos que se eliminarán. El * representa varios caracteres y el? representa un solo carácter. Este comando eliminaría todos los archivos de imagen png en el directorio de trabajo actual.

rm *.png

Este comando eliminaría todos los archivos que tengan una extensión de un solo carácter. Por ejemplo, esto eliminaría File.1 y File.2, pero no File.12.

rm *.?

Si un archivo está protegido contra escritura, se le preguntará antes de eliminarlo. Debes responder con y o n y presionar «Enter».

comando rm con archivo protegido contra escritura

Para reducir el riesgo de usar rm con comodines, use la opción -i (interactiva). Esto requiere que confirme la eliminación de cada archivo.

rm -i *.dat

comando rm en modo interactivo

La opción -f (forzar) es lo opuesto a interactivo. No solicita confirmación incluso si los archivos están protegidos contra escritura.

rm -f filename

Cómo eliminar directorios con rm

Para eliminar un directorio vacío, use la opción -d (directorio). Puede utilizar comodines (* y?) En los nombres de los directorios del mismo modo que con los nombres de los archivos.

rm -d directory

Al proporcionar más de un nombre de directorio, se eliminan todos los directorios vacíos especificados.

rm -d directory1 directory2 /path/to/directory3

Para eliminar directorios que no estén vacíos, use la opción -r (recursiva). Para ser claros, esto elimina los directorios y todos los archivos y subdirectorios contenidos en ellos.

rm -r directory1 directory2 directory3

Si un directorio o un archivo está protegido contra escritura, se le pedirá que confirme la eliminación. Para eliminar directorios que no están vacíos y suprimir estas solicitudes, use las opciones -r (recursiva) y -f (forzar) juntas.

rm -rf directory

Se requiere cuidado aquí. Cometer un error con el comando rm -rf podría provocar la pérdida de datos o un mal funcionamiento del sistema. Es peligroso y la precaución es la mejor política. Para comprender la estructura del directorio y los archivos que se eliminarán con el comando rm -rf, use el comando tree.

  Cómo ocultar las imágenes del remitente en Gmail para iOS

Use apt-get para instalar este paquete en su sistema si está usando Ubuntu u otra distribución basada en Debian. En otras distribuciones de Linux, utilice la herramienta de administración de paquetes de su distribución de Linux.

sudo apt-get install tree

La ejecución del comando de árbol produce un diagrama fácil de entender de la estructura del directorio y los archivos debajo del directorio desde el que se ejecuta.

tree

salida del comando de árbol

También puede proporcionar una ruta al comando de árbol para hacer que inicie el árbol desde otro directorio en el sistema de archivos.

tree path/to/directory

El comando rm también tiene opciones –one-file-system, –no-preserve-root, –preserve-root, pero solo se recomiendan para usuarios avanzados. Si se equivoca en algo, podría eliminar accidentalmente todos los archivos del sistema. Consulte el comando página de manual para más información.

  Cómo alojar un juego de Minecraft en una máquina virtual Linux

Cómo eliminar directorios con rmdir

Hay otro comando, llamado rmdir, que puede usar para eliminar directorios. La diferencia entre rm y rmdir es que rmdir solo puede eliminar directorios que están vacíos. Nunca borrará archivos.

El caso más simple es eliminar un solo directorio vacío. Al igual que con rm, puede pasar varios nombres de directorio a rmdir o una ruta a un directorio.

Elimine un solo directorio en el directorio actual pasando su nombre a rmdir:

rmdir directory

Elimine varios directorios pasando una lista de nombres a rmdir:

rmdir directory1 directory2 directory3

Elimine un directorio que no esté en el directorio actual especificando la ruta completa a ese directorio:

rmdir /path/to/directory

Si intenta eliminar una carpeta que no está vacía, rmdir le dará un mensaje de error. En el siguiente ejemplo, rmdir elimina correctamente y en silencio el directorio de clientes, pero se niega a eliminar el directorio de proyectos porque contiene archivos. El directorio de proyectos se deja exactamente como estaba y los archivos que contiene no se modifican.

comando rmdir con una carpeta no vacía

Cuando rmdir da un error de «Directorio no vacío», deja de procesar los directorios que se le pasaron en la línea de comando. Si le ha pedido que elimine cuatro directorios y el primero tiene archivos, rmdir le dará el mensaje de error y no hará nada más. Puede obligarlo a ignorar estos errores con la opción –ignore-fail-on-non-empty para que se procesen otros directorios.

En el siguiente ejemplo, se han pasado dos carpetas a rmdir, estas son trabajo / informes y trabajo / cotizaciones. La opción –ignore-fail-on-non-empty se ha incluido en el comando. La carpeta de trabajo / informes contiene archivos, por lo que rmdir no puede eliminarla. La opción –ignore-fail-on-non-empty obliga a rmdir a ignorar el error y pasar a la siguiente carpeta que necesita procesar, que es work / quotes. Esta es una carpeta vacía y rmdir la elimina.

  Cómo usar el comando rev en Linux

Este fue el comando utilizado.

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

rmdir con la opción --ignore-fail-on-non-empty

Puede usar la opción -p (padres) para eliminar un directorio y también para eliminar sus directorios principales. Este truco funciona porque rmdir comienza con el directorio de destino y luego retrocede hasta el padre. Ese directorio ahora debería estar vacío, por lo que rmdir puede eliminarlo, y el proceso se repite retrocediendo por la ruta que se proporcionó a rmdir.

En el siguiente ejemplo, el comando que se pasa a rmdir es:

rmdir -p work/invoices

comando rmdir con opción de eliminar padres

Tanto las facturas como los directorios de trabajo se eliminan, según lo solicitado.

Ya sea que esté utilizando Bash o cualquier otro shell, Linux proporciona comandos flexibles y potentes para que elimine directorios y archivos directamente desde la línea de comandos del terminal. Algunas personas prefieren tener un flujo de trabajo que gire en torno al terminal. Otros pueden no tener otra opción al respecto. Pueden estar trabajando en servidores sin una GUI instalada o en una sesión remota en un sistema sin cabeza como una Raspberry Pi. Estos comandos son perfectos para ese grupo de personas.

Pero sea cual sea el tipo de flujo de trabajo que prefiera, estos comandos se prestan muy bien para ser incluidos en scripts de shell. Si una secuencia de comandos se activa mediante un trabajo cron, puede ayudar a automatizar las tareas de limpieza de rutina, como la eliminación de archivos de registro no deseados. Si investiga ese caso de uso, recuerde el poder de estos comandos, pruebe todo con cuidado y mantenga siempre una copia de seguridad reciente.