¿Cómo podemos extraer archivos específicos de un archivo tar.gz grande? Encontré el proceso de extraer archivos de un tar en esta pregunta pero, cuando probé el comando mencionado allí, recibí el error:
$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
¿Cómo puedo extraer un archivo tar.gz?

Respuestas:
También puedes usar
tar -zxvf <tar filename> <file you want to extract>Debe escribir el nombre del archivo exactamente como lo
tar ztf test.tar.gzmuestra. Si dice./extract11, por ejemplo , osome/bunch/of/dirs/extract11, eso es lo que tiene que dar (y el archivo se mostrará exactamente con ese nombre, los directorios necesarios se crean automáticamente).-x: indica a tar que extraiga los archivos.-f: especifica el nombre del archivo / tarball.-v: Detallado (muestra el progreso al extraer archivos).-z: filtra el archivo a través de gzip, úsalo para descomprimir archivos .gz.fuente
$ tar -zxvf test.tar.gz extract11tar: extract11: Not found in archivetar: Error exit delayed from previous errorstar tf archive.tar.gz | grep extract11compruebe si extract11 está en el archivo o notar ztf test.tar.gzmuestra. Si dice./extract11, por ejemplo , osome/bunch/of/dirs/extract11, eso es lo que tiene que dar (y el archivo se mostrará exactamente con ese nombre, los directorios necesarios se crean automáticamente).-zopción no funciona en algunas versiones de Unix como HP-UX.fno debe estar al final. Pero debe ser seguido directamente por el nombre del archivo. Este ejemplo con todas las otras opciones después el nombre de alquitrán funciona bien:tar -f mytar.tar.gz -zxv dir/somefile. Extrae "dir / somefile" de "mytar.tar.gz".Supongamos que tiene un tarball llamado
lotsofdata.tar.gzy solo sabe que hay un archivo allí que desea, pero todo lo que puede recordar es que su nombre contiene la palabracontract. Tienes dos opciones:Use
tarygreppara enumerar el contenido de su tarball para que pueda encontrar la ruta completa y el nombre de cualquier archivo que coincida con la parte que conoce, y luego usetarpara extraer ese archivo ahora que conoce sus detalles exactos, o puede usar dos los conmutadores poco conocidos simplemente extraen todos los archivos que coinciden con lo poco que sabe del nombre de su archivo; no necesita saber el nombre completo ni ninguna parte de su ruta para esta opción. Los detalles son:Opción 1
Esto enumerará los detalles de todos los archivos cuyos nombres contienen su parte conocida. Luego extrae lo que quiere usando:
Es posible que necesite
./frente a su camino para que funcione.opcion 2
Depende de usted lo que encuentre más fácil o más útil.
fuente
tar -xzf lotsofdata.tar.gz <full path and filename from your list above>funcionó para mí sin dar./al comienzo de la ruta completa--wildcardsopción. Pude seguir teniendo un comportamiento similar con-x -O *foo.*foofue el nombre de archivo global en mi caso, ya que sabía que el archivo terminaba con foo.Intenté extraer unos cientos de archivos de un tarball con miles de archivos el otro día. Los archivos que necesito no pueden ser referenciados por un solo comodín. Así que busqué en Google y encontré esta página.
Sin embargo, ninguno de los trucos anteriores parece bueno para mi tarea. Terminé leyendo al hombre y encontré esta opción
--files-from, así que mi solución final esY funciona como un encanto.
Actualización: el archivo de lista debe tener el mismo formato que vería
tar -tvf, de lo contrario no podría extraer ningún archivo.fuente
Tu ejemplo funciona para mí si omites las llaves
Si su archivo extract11 está en una subcarpeta, debe especificar la ruta dentro del tarball.
fuente
$ tar --extract --file=test.tar.gz extract11tar: extract11: Not found in archivetar: Error exit delayed from previous errorsA continuación encontrará los ejemplos de extracción de archivos específicos del archivo tar.gz.
Del archivo local:
Desde URL remota:
fuente