GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo eliminar archivos con una extensión específica en la línea de comandos de Linux

Es posible que tenga una situación en la que desee eliminar varios archivos que tienen una extensión particular. Este tutorial te ayudará a hacer exactamente eso.

Utilice el comando rm para eliminar archivos y carpetas de la siguiente manera:

rm [option] filename

Puede parecer que necesita saber los nombres exactos de los archivos aquí, pero eso no es cierto.

Permítame mostrarle un par de métodos para eliminar varios archivos en función de su extensión.

Método 1:Eliminar archivos por extensión usando el comando rm

En mi ejemplo, tengo un montón de archivos gif que terminan con extensiones .gif.

Para eliminarlos, puedo usar el comando rm así:

rm *.gif

Eliminar archivos a ciegas de esa manera podría ser arriesgado. Siempre es bueno ver primero qué archivos se eliminarán con el comando ls:

ls *.gif

Así es como elimino los archivos con la extensión .gif:

$ ls
1.gif  2.gif  3.gif  4.gif  a.jpg  b.png  c.webp

$ ls *.gif
1.gif  2.gif  3.gif  4.gif


$ rm -v *.gif
removed '1.gif'
removed '2.gif'
removed '3.gif'
removed '4.gif'

$ ls
a.jpg  b.png  c.webp

Esto se puede hacer para cualquier extensión de archivo, no solo .gif. Incluso puede combinar varias extensiones.

$ ls
f1.txt  f2.txt  f3.txt  f4.txt  not-txt-file.pdf random.txt


$ rm -v *.txt *.pdf
removed 'f1.txt'
removed 'f2.txt'
removed 'f3.txt'
removed 'f4.txt'
removed 'not-txt-file.pdf'

$ ls
random.txt
💡Puede usar la opción interactiva -i con el comando rm que solicita confirmación antes de eliminar cada archivo. Sin embargo, esto puede no ser conveniente si tiene que eliminar numerosos archivos.

¿Se pregunta cómo funciona? ¡Comodines!

En pocas palabras, un comodín es un carácter especial que utiliza para hacer coincidir un patrón particular. A continuación se muestran algunos comodines que se utilizan con frecuencia:

Ha utilizado el comodín * aquí, lo que significa que puede coincidir con una o más ocurrencias de cualquier carácter.

Cuando dices *.gif , significa cualquier combinación de letras que lleve a .gif . En otras palabras, te da todos los archivos con la extensión .gif .

Cada comodín se puede utilizar además de un comodín más. Pero no entremos en esos detalles ahora.

¡Ese punto entre * y la extensión es importante!

Mucha gente comete el error de confundir el *.gif con *gif . Esto no está bien. El punto (.) entre * y el nombre de la extensión es crucial.

Toma el escenario con los siguientes archivos y mira lo que sucede cuando uso la expresión regular *gif en lugar de *.gif :

$ ls

1.gif  2.gif  3.gif  4.gif  definately-not-a-gif  jpg-not-gif  not-a-gif


$ rm -v *gif

removed '1.gif'
removed '2.gif'
removed '3.gif'
removed '4.gif'
removed 'definately-not-a-gif'
removed 'jpg-not-gif'
removed 'not-a-gif'

También eliminó archivos con la cadena gif en él, aunque no era la extensión del archivo, solo tenía gif al final del nombre del archivo sin el punto anterior.

Cuando elimine archivos con comodines o expresiones regulares, asegúrese de ser lo más preciso posible.

Método 2:Eliminar recursivamente archivos con una extensión particular usando el comando find

El comando rm elimina solo los archivos en el directorio actual. No elimina archivos de los subdirectorios, incluso con la opción recursiva.

Para eliminar recursivamente archivos con una extensión particular, puede combinar el comando de búsqueda y el comando rm:

Aquí hay un ejemplo donde también tengo archivos .gif en los subdirectorios.

$ ls *
file_0.gif  file_z.txt  not-a-gif  not-a-txt

dir1:
file_1.gif  file_a.txt  not-a-gif  not-a-txt

dir2:
file_2.gif  file_b.txt  not-a-gif  not-a-txt

dir3:
file_3.gif  file_c.txt  not-a-gif  not-a-txt

dir4:
file_4.gif  file_d.txt  not-a-gif  not-a-txt

Para eliminar los archivos, puede usar el comando de búsqueda de esta manera:

find . -type f -name "*.gif" -exec rm -v {} \;

Aquí está el resultado cuando ejecuté el comando:

$ find . -type f -name "*.gif" -exec rm -v {} \;
removed './dir1/file_1.gif'
removed './dir3/file_3.gif'
removed './dir2/file_2.gif'
removed './file_0.gif'
removed './dir4/file_4.gif

Vamos a desglosarlo.

  • El punto después de "buscar" significa buscar en el directorio actual
  • El indicador "-name" especifica el nombre del archivo, donde podemos usar expresiones regulares
  • El indicador "-exec" se usa para ejecutar un comando bash en el resultado del comando de búsqueda
  • Las llaves "{}" actúan como marcador de posición para el resultado de los archivos coincidentes, por lo que "rm -v {}" eliminará los archivos que encontró el comando find.
  • Finalmente, el punto y coma finaliza el comando ejecutado por su shell (el comando después de exec) y se usa la barra invertida '\' para que el punto y coma se escape correctamente. No deberías preocuparte por esto.

Puede aprender más ejemplos del comando de búsqueda en el tutorial a continuación.

Consejo adicional avanzado:utilice el comando de búsqueda para trabajar en archivos con varias extensiones

El comando que se muestra arriba no cubre la búsqueda de archivos con múltiples extensiones, algo así como "rm *.gif *.txt"

Para lograr eso, puedes usar -o argumento que significa 'operador OR lógico'. Pero también tenemos que usar la barra invertida '\' para escapar de los paréntesis

$ ls *
file_0.gif  file_z.txt  not-a-gif  not-a-txt

dir1:
file_1.gif  file_a.txt  not-a-gif  not-a-txt

dir2:
file_2.gif  file_b.txt  not-a-gif  not-a-txt

dir3:
file_3.gif  file_c.txt  not-a-gif  not-a-txt

dir4:
file_4.gif  file_d.txt  not-a-gif  not-a-txt

$ find . \( -name "*.gif" -o -name "*.txt" \) -exec rm -v {} \;
removed './dir1/file_1.gif'
removed './dir1/file_a.txt'
removed './dir3/file_3.gif'
removed './dir3/file_c.txt'
removed './dir2/file_2.gif'
removed './dir2/file_b.txt'
removed './file_0.gif'
removed './file_z.txt'
removed './dir4/file_d.txt'
removed './dir4/file_4.gif'

Aquí puede ver que todos los archivos con extensión 'txt' y archivos con extensión 'gif' se eliminan recursivamente.

Sé que sentirá que usar el comando de búsqueda por separado para cada tipo de extensión de archivo sería más fácil y no está equivocado allí.

Conclusión

Este artículo cubrió la eliminación de archivos con una extensión particular. También analizamos la búsqueda y eliminación recursiva de estos archivos.

"Un gran poder conlleva una gran responsabilidad" , recuerde esto cuando use comodines y expresiones regulares. Un error de escritura y los archivos importantes pueden eliminarse sin querer.


Linux
  1. Cómo eliminar archivos y directorios en Linux desde la línea de comandos

  2. ¿Cómo eliminar todos los archivos con una extensión particular en una carpeta particular?

  3. ¿Cómo ocultar archivos con una extensión específica?

  4. Cómo encontrar archivos con el comando fd en Linux

  5. ¿Cómo reemplazar un archivo en jar con línea de comando en Linux?

Cómo encontrar archivos con el comando fd en Linux

Cómo descargar archivos con el comando Curl en Linux

Cómo descargar archivos con el comando Wget en Linux

Cómo comprobar la versión del sistema operativo con la línea de comandos de Linux

Cómo instalar Dig en Linux con ejemplos de línea de comandos

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

    Comodín Usar
    * Hacer coincidir una o más ocurrencias
    ? Coincidir con una sola aparición
    [] (Corchetes) Especifique un rango para la coincidencia
    ^ Excluir del partido