sintaxis - Extrae y elimina todo.gz en un directorio- Linux
listar directorios y subdirectorios linux (7)
Tengo un directorio Tiene aproximadamente 500K .gz de archivos.
¿Cómo puedo extraer todos los archivos .gz en ese directorio y eliminar los archivos .gz?
@techedemic es correcto pero falta ''''. para mencionar el directorio actual, y este comando ir a través de todos los subdirectorios.
find . -name ''*.gz'' -exec gunzip ''{}'' /;
Esto debería hacerlo:
gunzip *.gz
Extraiga todos los archivos gz en el directorio actual y sus subdirectorios:
find . -name "*.gz" | xargs gunzip
Hay más de una forma de hacer esto obviamente.
# 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 simple.
Y para eliminarlo, simplemente haga una rm -rf *.gz
en el directorio correspondiente
Si desea extraer un solo archivo, use:
gunzip file.gz
Extraerá el archivo y eliminará el archivo .gz.
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 desmarcará todos los archivos .tar.gz en el directorio actual y luego eliminará todos los archivos .tar.gz. Si quieres una explicación, el "|" toma el stdout del comando anterior, y lo usa como el stdin del comando posterior. Use "man command " sin las comillas para descubrir qué hacen esos comandos y argumentos. O bien, puede investigar en línea.
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done