GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo eliminar todos los archivos de una carpeta excepto un archivo específico en Linux

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.doc
Descargar - 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!


Linux
  1. Cómo agregar números de línea a archivos de texto en Linux

  2. ¿Eliminar todos los archivos/directorios excepto un archivo?

  3. ¿Cómo eliminar todos los archivos excepto un archivo con nombre de una carpeta específica?

  4. Cómo gzip todos o archivos específicos en Linux

  5. Mover todos los archivos excepto uno

Todo sobre archivos tar y cómo tar, untar archivos en Linux usando Terminal

Cómo eliminar archivos con extensión específica en Linux

Cómo encontrar archivos que contengan una cadena de texto específica en Linux

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo unir/combinar varios archivos de audio en uno solo en Linux

Cómo comprimir un archivo en Linux