Digamos que tiene más de 100 archivos en una carpeta. Desea eliminarlos todos excepto uno o algunos archivos específicos. ¿Como lo harias? Puede copiar los archivos que desea conservar y guardarlos en una ubicación diferente y luego eliminar el resto de los archivos o la carpeta completa. Pero espera, conozco una manera más fácil de hacer esto. Puede eliminar todos los archivos en una versión anterior excepto un archivo específico o cierto tipo de archivos de una sola vez con un comando de una sola línea. ¿Quieres saber cómo? Sigue leyendo.
Eliminar todos los archivos de una carpeta excepto un archivo específico
Imaginemos el siguiente ejemplo. Tenemos una carpeta llamada 'prueba' que contiene 10 archivos de texto.
$ ls test/
Salida de muestra:
file10.txt file2.txt file4.txt file6.txt file8.txt file1.txt file3.txt file5.txt file7.txt file9.txt
Ahora, quiero eliminar todo en esta carpeta excepto file10.txt .
Puede haber muchos comandos para hacer esto. Pero estos son los cinco comandos que conozco.
Primero, ve a la prueba carpeta:
$ cd test/
Y ejecuta el siguiente comando:
$ rm -f !(file10.txt)
O simplemente use:
$ rm !(file10.txt)
El comando anterior eliminará todos los archivos en la carpeta de prueba excepto file10.txt archivo.
También puede usar comando de búsqueda para eliminar todo menos uno específico. El siguiente comando eliminará todos los archivos en la carpeta actual (es decir, prueba en nuestro caso) excepto file10.txt.
$ find . ! -name file10.txt -delete
Como puede ver en el ejemplo anterior, la carpeta de prueba contiene el mismo tipo de archivos, es decir, archivos .txt. ¿Qué haría si la carpeta tiene diferentes tipos de archivos como .mp3, .doc, .pdf, etc.? También es fácil mantener un tipo particular de archivos en una carpeta y eliminar todo lo demás.
Digamos que nuestra carpeta de prueba contiene tres archivos .txt, tres archivos .mp3, tres archivos .doc y un archivo .pdf.
$ ls test/
Salida de muestra:
total 0 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file10.pdf -rw-r--r-- 1 sk users 0 Mar 22 15:51 file1.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file2.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file3.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file4.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file5.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file6.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file7.doc -rw-r--r-- 1 sk users 0 Mar 22 15:51 file8.doc -rw-r--r-- 1 sk users 0 Mar 22 15:51 file9.doc
Como en el resultado anterior, tengo cuatro tipos diferentes de archivos (pdf, txt, mp3, doc) en la carpeta de prueba. Me gustaría conservar los archivos que tienen .doc extensión y eliminar todo lo demás. Así es como puedo hacer esto:
$ cd test/
$ rm !(*.doc)
Ahora, enumeremos el contenido del archivo usando el comando:
$ ls
Salida de muestra:
file7.doc file8.doc file9.doc
El comando anterior elimina todo en la carpeta excepto los archivos que tienen la extensión .doc .
Del mismo modo, puede mantener dos o más tipos de archivos en particular y eliminar todo lo demás. Digamos, por ejemplo, que el siguiente comando mantendrá los archivos que contengan .doc y .mp3 extensiones.
$ rm !(*.doc|*.mp3)
Ahora, verá que los archivos mp3 y doc no se eliminan.
$ ls
Salida de muestra:
file4.mp3 file5.mp3 file6.mp3 file7.doc file8.doc file9.docDescargar - Guía gratuita:"GNU/Linux Básico"
Estos son solo diez tipos diferentes de archivos. Solo imagina que tienes cientos de archivos. Sería más difícil encontrar cada tipo de archivo y eliminarlos manualmente. Este truco hará el trabajo en solo uno o dos segundos.
Tenga mucho cuidado al usar estos comandos. Vuelva a verificar la ruta del directorio antes de eliminar archivos para evitar la eliminación accidental de archivos importantes.
Lectura sugerida:
- Evitar la eliminación o modificación accidental de archivos y carpetas en Linux
- Una manera fácil de proteger archivos de eliminación accidental en Linux
Espero que esto ayude. Si encuentra útil esta guía, compártala en sus redes sociales y profesionales y apóyenos.
Más cosas buenas por venir. ¡Estén atentos!
¡Salud!