Comment pouvons-nous extraire des fichiers spécifiques d'un gros fichier tar.gz? J'ai trouvé le processus d'extraction de fichiers d'un fichier .tar dans cette question, mais lorsque j'ai essayé la commande mentionnée ici, j'ai eu l'erreur:
$ 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
Comment puis-je extraire un fichier tar.gz
?
Réponses:
Vous pouvez aussi utiliser
tar -zxvf <tar filename> <file you want to extract>
Vous devez écrire le nom du fichier exactement comme indiqué
tar ztf test.tar.gz
. S'il est indiqué par exemple./extract11
, ousome/bunch/of/dirs/extract11
si c'est ce que vous devez donner (et le fichier apparaîtra exactement sous ce nom, les répertoires nécessaires sont créés automatiquement).-x
: indique à tar d'extraire les fichiers.-f
: spécifie le nom du fichier / nom du fichier.-v
: Verbose (montrer la progression lors de l'extraction des fichiers).-z
: filtre les archives via gzip, permet de décompresser les fichiers .gz.la source
$ tar -zxvf test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors
tar tf archive.tar.gz | grep extract11
.s'il vous plaît vérifier si extrait11 est dans les archives ou pastar ztf test.tar.gz
. S'il est indiqué par exemple./extract11
, ousome/bunch/of/dirs/extract11
si c'est ce que vous devez donner (et le fichier apparaîtra exactement sous ce nom, les répertoires nécessaires sont créés automatiquement).-z
option ne fonctionne pas dans certaines versions d'Unix comme HP-UX.f
il ne faut pas être à la fin. Mais il doit être directement suivi du nom du fichier. Cet exemple avec toutes les autres options après le nom de goudron fonctionne très bien:tar -f mytar.tar.gz -zxv dir/somefile
. Il extrait "dir / somefile" de "mytar.tar.gz".Supposons que vous avez une archive appelée
lotsofdata.tar.gz
et que vous savez simplement qu'il y a un fichier que vous voulez, mais tout ce dont vous vous souvenez, c'est que son nom contient le motcontract
. Vous avez deux options:Utilisez soit
tar
etgrep
pour lister le contenu de votre archive afin de trouver le chemin complet et le nom de tout fichier correspondant à la partie que vous connaissez, puis utilisez-letar
pour extraire ce fichier maintenant vous en connaissez les détails exacts, ou vous pouvez utiliser deux les commutateurs peu connus ne permettent d'extraire que tous les fichiers qui correspondent au peu que vous savez de votre nom de fichier - vous n'avez pas besoin de connaître le nom complet ni aucune partie de son chemin pour cette option. Les détails sont:Option 1
Ceci listera les détails de tous les fichiers dont le nom contient votre partie connue. Ensuite, vous extrayez ce que vous voulez en utilisant:
Vous devrez peut-être
./
devant votre chemin pour que cela fonctionne.Option 2
A vous de choisir ce que vous trouvez le plus facile ou le plus utile.
la source
tar -xzf lotsofdata.tar.gz <full path and filename from your list above>
travaillé pour moi avec votre donner./
au début du chemin complet--wildcards
option. Je pouvais toujours avoir un comportement similaire avec-x -O *foo
.*foo
était le nom de fichier glob dans mon cas, puisque je savais que le fichier se terminait par foo.J'essayais d'extraire quelques centaines de fichiers d'une archive contenant des milliers de fichiers l'autre jour. Les fichiers dont j'ai besoin ne peuvent pas être référencés par un seul caractère générique. Alors j'ai googlé et trouvé cette page.
Cependant, aucune des astuces ci-dessus ne semble bonne pour ma tâche. J'ai fini par lire l'homme et j'ai trouvé cette option
--files-from
; ma dernière solution est doncet cela fonctionne comme un charme.
Mise à jour: le fichier de liste doit avoir le même format que celui que vous verriez
tar -tvf
, sinon vous ne pourriez pas extraire de fichier.la source
Votre exemple fonctionne pour moi si vous omettez les accolades
Si votre fichier extract11 se trouve dans un sous-dossier, vous devez spécifier le chemin dans l'archive.
la source
$ tar --extract --file=test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors
Veuillez trouver ci-dessous des exemples d'extraction de fichiers spécifiques à partir d'un fichier tar.gz.
À partir du fichier local:
De l'URL distante:
la source