Comment décompresser un fichier zip du terminal?

1413

Je viens de télécharger un fichier .zip à partir d'Internet. Je veux utiliser le terminal pour décompresser le fichier. Quelle est la bonne façon de faire cela?

Ubuntu-nerd
la source
3
Extraire tous les fichiers du dossier en cours, vous pouvez utiliser: unzip \ *. Zip
burtsevyg
2
@burtsevyg le backslash n'est pas nécessaire là. Cela fera de la coquille \*un symbole d'étoile littéral. Il suffit d’utiliser le unzip *.zipshell *pour développer tous les fichiers se terminant par.zip
Sergiy Kolodyazhnyy
L'utilisation *seule n'a pas fonctionné pour moi. Cela a causé des filename not matchederreurs. \*fait le travail.
arman_aegit
Je vous recommande d’utiliser et d’apprendre "unar" au lieu d’un zip spécifique, sauf si vous avez besoin de fonctionnalités spécifiques. "Les formats de fichiers pris en charge comprennent les formats Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt et de nombreux autres formats anciens et obscurs.".
masterxilo
Ubuntu a plusieurs outils de compression / décompression déjà installés. Exécuter à apropos zippartir de la console pour la liste complète.
Stephen W. Wright

Réponses:

1927

Si la unzipcommande n'est pas déjà installée sur votre système, exécutez:

sudo apt-get install unzip

Après avoir installé l’utilitaire de décompression, si vous souhaitez extraire vers un dossier de destination particulier, vous pouvez utiliser:

unzip file.zip -d destination_folder

Si les répertoires source et de destination sont les mêmes, vous pouvez simplement faire:

unzip file.zip
Kelley
la source
83
Si vous êtes déjà dans le répertoire dans lequel vous voulez décompresser le fichier, omettez les 2ème et 3ème arguments, c'estunzip /path/to/file.zip
Severo Raz
2
Je viens d'utiliser cette commande. Ceci est un exemple. Étape 1 (j'ai changé le répertoire dans lequel le fichier zip est stocké): Étape 2 ( cd /home/paf/Copy/Programming/Javascript/Jsonunzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
j'extrais
2
unzippeut être un programme par défaut. En d'autres termes, vous n'aurez peut-être pas besoin de l'installer.
noobninja
2
Pages de manuel @Aevi Check[-d exdir] An optional directory to which to extract files.
WAKR le
4
Assurez-vous d’extraire dans un répertoire, contrairement aux archives tar, vous constaterez peut-être que de nombreuses personnes incluent des dizaines de fichiers dans le répertoire racine de leurs fichiers zip, ce qui peut causer un véritable désordre !!!
Steve
230

Vous pouvez simplement utiliser unzip.

Installez-le:

apt-get install unzip

Et utilisez-le:

cd /path/to/file
unzip file.zip
Panthère
la source
117

Un outil plus utile consiste à 7zcompresser et décompresser toute une gamme de formats de compression, notamment lzmale protocole offrant les taux de compression les plus élevés.

Cette commande installe 7z:

sudo apt-get install p7zip-full

Cette commande liste le contenu du zip:

7z l zipfile.zip

Cette commande extrait le contenu du zip:

7z x zipfile.zip
Chris
la source
5
7z ene conserve pas la structure du répertoire - 7z xne ...
assylias
2
13.10 dit 7z n'existe pas. Je pense qu'il faut sudo apt-get install 7zip
nitishch
6
Je pense que la commande d'installation devrait être sudo apt-get install p7zipou sudo apt-get install p7zip-fullVous avez besoin de la version complète pour obtenir la 7zcommande. Full est également le seul à gérer le format zip et d’autres types de formats.
Automatico
1
Pourriez-vous préciser "Un outil plus utile"? Vous comparez pour décompresser? Pourriez-vous donner des exemples de fonctionnalités qui rendent 7z plus utile, et peut-être dans quels contextes 7z est préféré?
David LeBauer
1
Pour certains, le décompression est plus utile: facile à utiliser et son nom à retenir.
Timide Robbiani
47

Vous pouvez utiliser:

unzip file.zip -d somedir

extraire vers yourpath/somedir

Si vous voulez extraire un chemin absolu, utilisez

sudo unzip file.zip -d /somedir
Cristobalhdez
la source
39

Utilisation d'outils de script: Perl et Python

Beaucoup de réponses ici mentionnent des outils qui nécessitent une installation, mais personne n’a mentionné que deux des langages de script d’Ubuntu, Perl et Python, sont déjà livrés avec tous les modules nécessaires pour décompresser une archive zip, ce qui signifie que vous n’aurez rien à installer. autre. Utilisez simplement l’un des deux scripts présentés ci-dessous pour effectuer le travail. Ils sont assez courts et peuvent même être condensés en une seule ligne si nous le voulions.

Python

#!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
    pzf = PyZipFile(zip_file)
    pzf.extractall()

Usage:

./pyunzip.py master.zip 

ou

python3 pyunzip.py master.zip

Perl

#!/usr/bin/env perl
use Archive::Extract;
foreach my $filepath (@ARGV){
    my $archive = Archive::Extract->new( archive => $filepath );
    $archive->extract;
}

Usage:

./perlunzip master.zip

ou

perl perlunzip.pl master.zip

Voir également

Sergiy Kolodyazhnyy
la source
1
Merci, exactement ce dont j'ai besoin. Je n'ai pas de racine et je ne veux pas installer décompresser manuellement le code source. Cela peut aussi être utilisé avec une ligne unique qui fonctionnera le plus souvent (en supposant qu’il n’y ait pas de '''nom de fichier):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn
@mxmlnkn Glad je pourrais aider :)
Sergiy Kolodyazhnyy
30

Si les répertoires source et de destination sont les mêmes, vous pouvez simplement faire:

unzip filename.zip
Nadeem Khan
la source
Sur Ubuntu 17.04, -d require pour une raison inconnue.
21

Je préfère bsdtarà unzip/ zip. Pour extraire, ils sont assez similaires:

bsdtar -x -f /one/two/three/four.zip -C /five
unzip /one/two/three/four.zip -d /five

Cependant, pour zipper, bsdtargagne. Disons que vous avez cette entrée:

/one/two/three/alfa/four.txt
/one/two/three/bravo/four.txt

et veux ceci dans le fichier zip:

alfa/four.txt
bravo/four.txt

C'est facile avec bsdtar:

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo

zip n'a pas l' -doption comme unzip, vous n'avez donc aucun moyen de réaliser ce qui précède à moins que vous ne le fassiez cdauparavant.

Steven Penny
la source
Autant que je voudrais donner la victoire à un outil foss, apparemment bsdtarne présage pas bien avec des caractères spéciaux comme au moins un dans le mot Blóðstokkinnlorsqu’il est décomprimé. Je n'ai même pas vérifié lors de la compression. Quelle déception. : / unzipmanipulé sans problème.
Vrakfall
20

Voici la description détaillée des options que je trouve utiles:

Commande: décompresser - [option] zip-path.
               -d un répertoire optionnel dans lequel extraire des fichiers  
               -l Liste les fichiers d’archive.
               -P mot de passe Utilisez un mot de passe pour déchiffrer les entrées cryptées du fichier zip (le cas échéant).
               -t Test des fichiers d'archive avec contrôle de redondance cyclique.  
               -u Mettre à jour les fichiers existants.  
               -z commentaire d'archive
Kashminder
la source
8

http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/ :

Installer unzip ============= Donc, tout d'abord, nous devons installer unzip sur notre système s'il n'est pas installé. La commande unzip est utilisée pour extraire des fichiers d’une archive ZIP.

Exécutez la commande suivante pour installer unzip

sudo apt-get install unzip

unzip Syntex

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile

Maintenant, suivez les étapes ci-dessous:

UnZip File

OPTION 1 - Si le fichier Zip se trouve dans le même répertoire / dossier que votre terminal et que nous souhaitons l'extraire dans le répertoire de travail actuel.

Utilisez la commande suivante pour réaliser le scénario décrit ci-dessus

sudo unzip zip_file_name.zip

si le fichier zip est protégé par un mot de passe, utilisez la commande suivante:

sudo ubzip -P zip_file_name.zip

Assurez-vous d’utiliser -P (P majuscule) et non -p car il existe différentes options.

OPTION 2 - Si le fichier zip n'est pas présent dans le même répertoire et que nous souhaitons extraire / décompresser le fichier dans un répertoire différent.

Utilisez la commande suivante pour réaliser le scénario décrit ci-dessus

sudo unzip path/filename.zip -d another_path_or_same_path

si nous n'utilisons pas l'option -d, le fichier sera extrait pour présenter le répertoire de travail.

Et si le fichier zip est protégé par un mot de passe, nous pouvons également utiliser -P.

Utiliser la commande tar sous Linux / Unix

tarest un acronyme pour Tape Archive. La commande tar est utilisée pour manipuler des archives sous Linux / Unix. Les administrateurs système utilisent fréquemment la commande tar pour extraire une série de fichiers ou de répertoires dans des archives hautement compressées appelées tarballou tar, bzipet gzipdans les systèmes Linux / Unix .

tar Syntex

tar [OPTION...] [FILE]...

Ou

goudron requis

tar {-r|-t|-c|-x|-u}

Drapeaux facultatifs de goudron

tar {one of the required Flags} [ -d ][-B] [ -F ] [ -E ] [ -i ] [-h ] [ -l ] [ -m ] [ -o ] [ -p ] [ -w] [ -s ] [ -U ] [ -v ]
[-Number] [-b Blocks] [-f Archive]

Exemples

Créer un fichier archive tar en compressant un répertoire ou un fichier unique

La commande de terminal ci-dessous créera un .tarfichier appelé sample_dir.taravec un répertoire /home/codebind/sample_dirou sample_dirdans le répertoire de travail actuel.

ripon@ripon:~$  tar -cvf sample_dir.tar sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar

entrez la description de l'image ici

Voici ce que signifient ces drapeaux (-cvf)

-c, --create- créer une nouvelle archive

-x, --extract, --get- extraire des fichiers d'une archive

-f, --file ARCHIVE- utiliser un fichier archive ou un périphérique ARCHIVE

Créer tar.gzou tgzarchiver un fichier en compressant un répertoire ou un fichier unique

La commande de terminal ci-dessous créera un .tar.gzfichier appelé sample_dir.tar.gzavec un répertoire /home/codebind/sample_dirou sample_dirdans le répertoire de travail actuel.

Notez que nous avons ajouté un indicateur supplémentaire -z à la commande. Voici ce que signifie réellement l'indicateur -z

-z, --gzip, --gunzip --ungzip- Compressez l'archive avec gzip

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar.gz

entrez la description de l'image ici

La commande ci-dessous va créer un fichier .tgz. Tar.gz et tgz sont similaires.

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tgz

Compresser plusieurs répertoires ou fichiers à la fois

Disons, par exemple, nous voulons compresser le sample_dirrépertoire, le java_testrépertoire et le abc.pyfichier dans un fichier tar appelé sample_dir.tar.gz.

Exécutez la commande suivante pour atteindre l'objectif ci-dessus.

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.py
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
java_test/
java_test/HelloCV.java
abc.py
ripon@ripon:~$ ls
sample_dir java_test abc.py sample_dir.tar.gz

entrez la description de l'image ici

Créer un .bzip2fichier archive en compressant un répertoire ou un fichier unique

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

Notez que nous avons ajouté un drapeau supplémentaire -fà la commande. Voici ce que -fsignifie réellement le drapeau

-f, --file ARCHIVE- utiliser un fichier archive ou un périphérique ARCHIVE

entrez la description de l'image ici

Extraire le .tarfichier archive

Nous pouvons extraire ou décompresser le fichier compressé à l'aide de la commande tar. La commande ci-dessous extraira le contenu du sample_dir.tarrépertoire présent.

ripon@ripon:~$ tar -xvf sample_dir.tar
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

entrez la description de l'image ici

La commande suivante extraira ou annulera les fichiers du répertoire spécifié, c’est- /home/codebind/dir_nameà- dire dans ce cas.

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

nous avons ajouté un drapeau supplémentaire -Cà la commande.Voici ce que le drapeau -C signifie réellement

-C, --directory DIR - changer dans le répertoire DIR

entrez la description de l'image ici

MAK Ripon
la source
1
Aussi, pour vérifier si zip / unzip sont installés, utilisez zip -vet unzip -v. S'il est installé, il retournera quelque chose comme UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(plus plusieurs lignes d'informations supplémentaires. S'il n'est pas installé, il dira quelque chose comme The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman