GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo eliminar archivos y directorios en Linux

Este artículo continúa una serie de artículos sobre el shell de Linux y cubre las tres formas más útiles de eliminar archivos y directorios. También cubrimos casos excepcionales como eliminar directorios con una gran cantidad de archivos dentro, eliminar archivos o directorios con caracteres especiales en sus nombres. Mejore sus habilidades con Linux en solo 5 minutos.

comando “rmdir”

Antes de usar rmdir comando, debe saber que no recuperará fácilmente los objetos eliminados.

Ahora, abra la terminal de línea de comando si está usando Linux o macOS. Si usa Windows, puede usar el Subsistema de Windows para Linux (WSL).

Antes de eliminar el directorio, vamos a crearlo primero:

$ mkdir /tmp/docs

Ahora, eliminémoslo por el nombre /tmp/docs usando el siguiente comando:

$ rmdir /tmp/docs

rmdir es un comando para eliminar directorios vacíos. Es bastante útil, ya que está protegido contra la eliminación de algo importante de su sistema de archivos.

Validemos este comportamiento colocando un archivo dentro de un directorio, que nos gustaría eliminar:

$ mkdir -p /tmp/docs

$ touch /tmp/docs/my_file

$ tree /tmp/docs

/tmp/docs
└── my_file

0 directories, 1 file

Si su directorio no está vacío, recibirá el siguiente error:

$ rmdir /tmp/docs
rmdir: /tmp/docs: Directory not empty

Para eliminar el directorio, que contiene archivos, debe usar rm comando:

$ rm -rf /tmp/docs

Eliminar varios directorios usando comodines

Todos los comandos de la consola en Linux pueden procesar archivos y carpetas usando comodines (*) en el nombre del archivo o carpeta. Eliminemos la siguiente estructura de carpetas:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
└── dir3

3 directories, 0 files

Para eliminar todos los directorios, que comienza desde dir necesitamos usar el siguiente comando:

$ rmdir /tmp/docs/dir*

Este es el resultado esperado:

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

comando “rm”

La empresa El comando es un comando de propósito general que puede eliminar no solo directorios sino también archivos. Pero el comportamiento predeterminado del rm El comando no le permite eliminar ninguna carpeta. Puedes usar -r-R argumentos para eliminar directorios, incluidos los subdirectorios.

Imaginemos que tenemos la siguiente estructura de sistema de archivos:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Si desea eliminar el /tmp/docs directorio completamente, use el siguiente comando:

$ rm -rf /tmp/docs

donde:

  • -r – un intento de eliminar todos los subdirectorios de un directorio en particular.
  • -f – un intento de eliminar los archivos sin confirmación o permiso previo.

/bin/rm:Lista de argumentos demasiado larga

Puede recibir este mensaje de error cuando intenta eliminar un directorio con muchos archivos. Este error ocurre porque la cantidad de archivos proporcionados al rm El comando es más grande que el límite del sistema en el tamaño del argumento de la línea de comandos.

La forma más fácil de eliminar una carpeta de este tipo es usar buscar comando para eliminar primero todos los archivos y luego eliminar el directorio en sí:

$ find /tmp/docs -type f -delete

$ rm -r /tmp/docs

Aquí:

  • /tmp/docs – directorio de búsqueda.
  • -tipo f – le dice a la utilidad de búsqueda que solo busque archivos.
  • -eliminar – le dice a la utilidad de búsqueda que elimine los resultados encontrados.

También puede crear una carpeta vacía y usar rsync utilidad:

$ mkdir empty_dir

$ rsync -a --delete empty_dir/ /tmp/docs/

Esto consume CPU, pero es la forma más rápida de limpiar /tmp/docs directorio.

comando “buscar”

El comando de búsqueda es una utilidad de línea de comandos de búsqueda multipropósito, que requiere un artículo aparte, pero en nuestro caso, lo usaremos para eliminar las carpetas.

Eliminar utilizando patrón en el nombre

Eliminemos todos los directorios por el patrón dir* en nombres de directorios anidados:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Use el siguiente comando para hacerlo:

$ find /tmp/docs -type d -name 'dir*' -exec rm -rf {} +

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

Aquí, el buscar El comando devolverá todos los directorios anidados cuyo nombre comience desde dir :

$ find /tmp/docs -type d -name 'dir*'
/tmp/docs/dir2
/tmp/docs/dir3
/tmp/docs/dir1

Y luego ejecuta el ya familiar rm -rf comando para cada hallazgo (es por eso que estamos usando {} + secuencia).

Eliminar todos los directorios vacíos en la estructura de carpetas

En muchos casos, es posible que desee eliminar solo carpetas vacías dentro de la estructura de carpetas. Eliminemos dir1otro_dir del siguiente ejemplo:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
│   └── my_file2
├── dir3
│   └── my_file3
└── other_dir

4 directories, 2 files

Así es como se hace:

$ find /tmp/docs -type d -empty -delete

$ tree /tmp/docs
/tmp/docs
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

2 directories, 2 files

Eliminar archivos con caracteres especiales (por inode)

Si el nombre de su directorio contiene un carácter especial o consiste en palabras que no están en inglés, entonces el habitual rmrmdir El comando puede no funcionar para usted. En ese caso, puede eliminar ese directorio usando su inodo.

Inodo:es un número de nodo de índice que representa un archivo o directorio en el sistema de archivos.

Puede encontrar el número de inodo de archivo o directorio usando el siguiente comando:

$ ls -il /tmp/docs
total 0
8669007889 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:48 dir2
8669007891 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:46 dir3

En este ejemplo, dir2 la carpeta tiene el inodo 8669007889 número.

Ahora, podemos usar esta información para eliminarlo:

$ find /tmp/docs -inum 8669007889 -exec rm -rf {} +

Aquí:

  • -inum – le dice a la utilidad de búsqueda que busque el objeto del sistema de archivos con el número de inodo 8669007889 .
  • -ejec rm -rf – le dice a la utilidad find que llame a rm con -rm argumentos para cada hallazgo ({} + ).

Resumen

En este artículo, describimos tres formas de eliminar directorios en Linux. También cubrimos casos especiales como la eliminación de carpetas o directorios enormes con caracteres especiales en sus nombres.

Esperamos que este artículo le resulte útil. Si es así, por favor, ayúdanos a difundirlo por el mundo.

Si conoce otros casos de uso interesantes, que pueden ser cubiertos por el artículo, comuníquese con nosotros en la sección de comentarios a continuación.


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Cómo eliminar archivos y directorios en la línea de comandos de Linux [Tutorial para principiantes]

  3. Linux Eliminar archivos y directorios

  4. UNIX/Linux:¿Cuál es el permiso correcto de los directorios /tmp y /var/tmp?

  5. Cómo encontrar y eliminar directorios y archivos vacíos en Linux

Cómo comprimir archivos y directorios en Linux

Cómo quitar (eliminar) directorio en Linux

Cómo encontrar y eliminar directorios vacíos en Linux

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

Cómo quitar/eliminar archivos en Linux usando el comando rm

Cómo eliminar archivos y directorios usando la línea de comandos de Linux