Ce que vous voulez faire, c'est faire en sorte que unzip
prenne un fichier ZIPpé en entrée standard au lieu de comme argument. C'est généralement facilement pris en charge par des outils du type gzip
et tar
avec un argument -
. Mais le standard unzip
ne le fait pas (bien que, il prenne en charge l'extraction vers un tube). Cependant, tout n'est pas perdu...
Regardez la page manuel de funzip.
funzip sans argument de fichier agit comme un filtre ; c'est-à-dire, il suppose qu'une archive ZIP (ou un fichier gzip) est transmise à l'entrée standard, et extrait le premier membre de l'archive vers la sortie standard. Lorsque stdin provient d'un périphérique tty, funzip suppose que cela ne peut pas être un flux de données compressées (binaires) et affiche plutôt un texte d'aide court. S'il y a un argument de fichier, alors l'entrée est lue à partir du fichier spécifié au lieu de stdin.
Étant donné la limitation de l'extraction d'un seul membre, funzip est le plus utile en conjonction avec un programme d'archivage secondaire tel que tar(1)
. La section suivante inclut un exemple illustrant cette utilisation dans le cas de sauvegardes sur disque vers une bande.
Cela va bien avec l'idée que la plupart des archives Linux sont généralement TARées puis ZIPpées de quelque manière (gzip, bzip, entre autres). Cela fonctionnera pour vous si vous avez un tar.ZIP
.
Il convient de noter que funzip
est écrit par l'auteur original d'Info-ZIP, Mark Adler. Il écrit dans la page manuel de funzip,
cette fonctionnalité devrait être incorporée dans unzip lui-même (future version).
cependant, aucune mise à jour de ce type n'est observée. Je soupçonne que Mark l'a jugé inutile puisque d'autres méthodes d'archivage fonctionnaient facilement avec TAR.
0 votes
Cela semblait réalisable, mais il semble que ce soit seulement possible d'extraire un fichier zip et de le transmettre à une autre commande si le zip contient un seul fichier. Je voulais extraire un fichier spécifique d'un zip multi-fichier. Au lieu de transmettre, j'ai opté pour l'enchaînement de plusieurs commandes 'unzip file.zip /chemin/fichier && dostuff /chemin/fichier && rm -rf /chemin'. Bien que cela ne réponde pas à la question initiale et implique la création de fichiers temporaires, cela a satisfait mon besoin.
0 votes
Vérifiez pigz. Nous l'utilisons dans un tuyau. andrew.tumblr.com/post/2316602611