¿Cómo extraer todos los archivos tar.gz presentes en varias carpetas a la vez en otro directorio?

1

Hay muchas carpetas en mi directorio actual. Cada carpeta tiene un archivo tar.gz. Para extraer el archivo tar.gz, necesito estar dentro de cada carpeta y ejecutar el siguiente comando cada vez.

tar xvzf tar.gz -C /path/to/targetdirectory

Dentro de mi directorio actual se ve a continuación:

   current directory
            ├──Folder1
                ├── A.tar.gz
            ├──Folder2
                ├── B.tar.gz
            ├──Folder3
                ├── C.tar.gz
            ├──Folder4
                ├── D.tar.gz
            ├──Folder5
                ├── E.tar.gz

Para extraer todo a la vez lo intenté así.

tar xvzf */*.tar.gz -C /path/to/targetdirectory

Esto me dio un error:

tar: Folder1/A.tar.gz: Not found in archive
tar: Folder2/B.tar.gz: Not found in archive
tar: Folder3/C.tar.gz: Not found in archive
tar: Folder4/D.tar.gz: Not found in archive
tar: Folder5/E.tar.gz: Not found in archive
beginner
fuente

Respuestas:

1

Utilizar find y ejecute un comando en cada archivo encontrado, en el directorio de ese archivo:

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \;

los -execdir opción ejecuta tar desde dentro de la carpeta del archivo encontrado, y {} Será reemplazado por el nombre del archivo tar.

Ver el find documentación para más información.

slhck
fuente
¿Dónde debo dar el directorio de destino en el comando?
beginner
De acuerdo. Dio así para obtener los archivos extraídos en el directorio de destino. encontrar . -name '* .tar.gz' -execdir tar -C / path / to / targetdirectory -xzvf '{}' \; Esto funciono
beginner
Sí, puede especificar los comandos como de costumbre dentro de la -exec opción.
slhck
hola ... tengo poca duda. ¿Hay una manera de dar ruta a esos archivos ... *. Tar.gz?
beginner
Usted puede find en otro directorio reemplazando find . con find /path/to/directory.
slhck