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?
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?
Respuestas:
Esto debería hacerlo:
gunzip *.gz
find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip
restringir las instancias a 50 argumentos cada una (y ejecutarlas en paralelo).
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 *.gz
en el directorio correspondiente
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
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.
.gz
archivo no tiene por qué ser necesariamente un archivo. En ese caso, no tendría nada que eliminar al realizar la ejecucióngzip -d file.gz
.