¿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

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.


¿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
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.