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:
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 |
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.