El rm
y rmdir
los comandos eliminan archivos y directorios en Linux, macOS y otros sistemas operativos similares a Unix. Son similares a los del
y deltree
en Windows y DOS. Estos comandos son muy potentes y tienen bastantes opciones.
Es importante tener en cuenta que los archivos y directorios eliminados utilizando rm
y rmdir
no te muevas 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.
¿De qué vamos a hablar?
Cómo eliminar archivos con rm
El caso más simple es eliminar un solo archivo en el directorio actual. Escriba el rm
, un espacio y, a continuación, 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 de acceso 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
Los comodines se pueden usar 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 tienen 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 que se elimine el archivo. Debe responder con y
o n
y presione “Enter”.
Para reducir el riesgo de uso rm
Con los comodines, utilice el cuadro -i
opción (interactiva). Esto requiere que confirme la eliminación de cada archivo.
rm -i *.dat
El -f
La opción (fuerza) es lo opuesto a la interactiva. No solicita confirmación incluso si los archivos están protegidos contra escritura.
rm -f filename
Cómo quitar directorios con rm
Para quitar un directorio vacío, utilice el comando -d
(directorio) opción. Puede utilizar comodines (*
y ?
) en los nombres de directorio al igual que con los nombres de archivo.
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, utilice el botón -r
opción (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 estos mensajes, utilice el comando -r
(recursivo) y -f
(forzar) opciones juntas.
rm -rf directory
Aquí se requiere cuidado. Cometer un error con el rm -rf
podría causar pérdida de datos o mal funcionamiento del sistema. Es peligroso, y la precaución es la mejor política. Para obtener una comprensión de la estructura de directorios y los archivos que serán eliminados por el rm -rf
, utilice el comando tree
mandar.
Uso apt-get
para instalar este paquete en su sistema si está utilizando 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 en su lugar.
sudo apt-get install tree
Ejecutando el tree
produce un diagrama fácil de entender de la estructura de directorios y los archivos debajo del directorio desde el que se ejecuta.
tree
También puede proporcionar una ruta de acceso a la tree
para que inicie el árbol desde otro directorio del sistema de archivos.
tree path/to/directory
El rm
El comando también tiene --one-file-system, --no-preserve-root, --preserve-root
opciones, pero solo se recomiendan para usuarios avanzados. Si se equivoca en algo, podría eliminar accidentalmente todos los archivos del sistema. Consultar los comandos página del manual para más información.
Cómo quitar directorios con rmdir
Hay otro comando, llamado rmdir
, que puede utilizar para eliminar directorios. La diferencia entre rm
y rmdir
es que rmdir
solo puede eliminar directorios que están vacíos. Nunca eliminará 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 de acceso a un directorio.
Elimine un solo directorio en el directorio actual pasando su nombre a rmdir
:
rmdir directory
Eliminar varios directorios pasando una lista de nombres a rmdir
:
rmdir directory1 directory2 directory3
Eliminar un directorio que no está en el directo actualry 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 de forma silenciosa el clients
pero se niega a eliminar el projects
porque contiene archivos. El projects
el directorio se deja exactamente como estaba y los archivos en él están intactos.
Cuando rmdir
da un error “Directorio no vacío”, deja de procesar los directorios que se le pasaron en la línea de comandos. Si le ha pedido que elimine cuatro directorios y el primero tenía archivos, rmdir
le daría el mensaje de error y no haría nada más. Puede forzarlo a ignorar estos errores con el --ignore-fail-on-non-empty
para que se procesen otros directorios.
En el ejemplo siguiente se han pasado dos carpetas a rmdir
, estos son work/reports
y work/quotes
. El --ignore-fail-on-non-empty
se ha incluido la opción en el comando. El work/reports
la carpeta tiene archivos en ella, por lo que rmdir
no se puede eliminar. El --ignore-fail-on-non-empty
fuerzas de opción rmdir
Para ignorar el error y pasar a la carpeta siguiente que necesita procesar, que es work/quotes
. Esta es una carpeta vacía, y rmdir
lo elimina.
Este fue el comando utilizado.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Puede utilizar el -p
(padres) opción para eliminar un directorio y eliminar también sus directorios principales. Este truco funciona porque rmdir
comienza con el directorio de destino y, a continuación, retrocede al elemento primario. Ese directorio ahora debería estar vacío, por lo que puede ser eliminado por rmdir
, y el proceso repite retroceder en la ruta de acceso que se proporcionó a rmdir
.
En el ejemplo siguiente, el comando que se pasa a rmdir
es:
rmdir -p work/invoices
Tanto el invoices
y el work
los directorios se eliminan, según se solicite.
Ya sea que esté utilizando Bash o cualquier otro shell, Linux proporciona comandos flexibles y potentes para que pueda eliminar 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 en el asunto. 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 un script es activado por un cron
puede ayudar a automatizar las tareas rutinarias de limpieza, como purgar archivos de registro no deseados. Si investiga ese caso de uso, recuerde el poder de estos comandos, pruebe todo cuidadosamente y siempre mantenga una copia de seguridad reciente.