Extraiga y elimine todo .gz en un directorio - Linux


81

Tengo un directorio. Tiene alrededor de 500K archivos .gz.

¿Cómo puedo extraer todos los archivos .gz de ese directorio y eliminar los archivos .gz?


Un .gzarchivo no tiene por qué ser necesariamente un archivo. En ese caso, no tendría nada que eliminar al realizar la ejecución gzip -d file.gz.
devnull

Estoy votando para cerrar esta pregunta como fuera de tema porque pertenece a unix.stackexchange.com
Shankar Damodaran

Respuestas:


169

Esto debería hacerlo:

gunzip *.gz

1
... a menos que eso le dé un error 'argmuent demasiado grande'. En cuyo caso, querrá usar algo como find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunziprestringir las instancias a 50 argumentos cada una (y ejecutarlas en paralelo).
Toby Speight

22

@techedemic es correcto pero falta '.' para mencionar el directorio actual, y este comando recorre todos los subdirectorios.

find . -name '*.gz' -exec gunzip '{}' \;

19

Obviamente, hay más de una forma de hacer esto.

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '{}' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

Estoy seguro de que también hay otras formas, pero esta es probablemente la más sencilla.

Y para eliminarlo, simplemente haga un rm -rf *.gzen el directorio correspondiente


3

Extraiga todos los archivos gz en el directorio actual y sus subdirectorios:

 find . -name "*.gz" | xargs gunzip 

3

Si desea extraer un solo archivo, utilice:

gunzip file.gz

Extraerá el archivo y eliminará el archivo .gz.



0

Tratar:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

Entonces intenta:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

Esto descomprimirá todos los archivos .tar.gz en el directorio actual y luego eliminará todos los archivos .tar.gz. Si desea una explicación, el "|" toma la salida estándar del comando anterior y la usa como estándar del comando posterior. Utilice " comando man " sin las comillas para averiguar qué hacen esos comandos y argumentos. O puede investigar en línea.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.