web-dev-qa-db-fra.com

Comment décompresser un fichier Zip depuis le terminal?

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?

1334
ubuntu-nerd

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

Sudo apt-get install unzip

Après avoir installé l'utilitaire unzip, si vous souhaitez extraire un dossier de destination particulier, vous pouvez utiliser:

unzip file.Zip -d destination_folder
1821
Kelley

Vous pouvez simplement utiliser unzip.

Installez-le:

apt-get install unzip

Et utilisez-le:

unzip file.Zip
223
Panther

Un outil plus utile est 7z, qui décompresse et décompresse une gamme de formats de compression, notamment lzma, généralement le 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
110
Chris

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
43
cristobalhdez

Utilisation d'outils de script: Perl et Python

De nombreuses réponses ici mentionnent des outils nécessitant 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 qui vous permettent de décompresser une archive Zip, ce qui signifie que vous n'avez pas besoin d'installer quoi que ce soit. 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

36

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

unzip filename.Zip
28
Nadeem Khan

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

Commande: Décompressez - [option] Zip-path. 
 -D un répertoire facultatif dans lequel extraire les fichiers 
 -L Répertorier les fichiers d’archive. 
 -P mot de passe Utilisation mot de passe pour décrypter les entrées cryptées du fichier zip (le cas échéant). 
 -t Testez les fichiers d’archive avec un contrôle de redondance cyclique. 
 -u Met à jour les fichiers existants. 
 -z commentaire d'archive
20
kashminder

Je préfère bsdtarà unzipname __/Zipname__. 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 bsdtarname__:

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

Zip n'a pas l'option -d comme unzip, vous n'avez donc aucun moyen de réaliser ce qui précède à moins que vous ayez cden premier.

20
Steven Penny

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

tar est l'acronyme de 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 un groupe de fichiers ou de répertoires en une archive hautement compressée, appelée système tarball ou tar, bzip et gzip dans Linux/Unix .

tar Syntex

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

Ou

tar obligatoire Drapeaux

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

tar optionnel Drapeaux

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ée un fichier .tar appelé sample_dir.tar avec un répertoire /home/codebind/sample_dir ou sample_dir dans 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

enter image description here

Voici ce que signifient ces drapeaux (-cvf)

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

-x, --extract, --get– extraire les fichiers d'une archive

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

Créez un fichier d’archivage tar.gz ou tgz en compressant un répertoire ou un fichier unique

La commande de terminal ci-dessous crée un fichier .tar.gz appelé sample_dir.tar.gz avec un répertoire /home/codebind/sample_dir ou sample_dir dans le répertoire de travail actuel.

Notez que nous avons ajouté le drapeau -z supplémentaire à la commande. Voici ce que signifie le drapeau -z.

-z, --gzip, --gunzip --ungzip– Compresser 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

enter image description here

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

Compression simultanée de plusieurs répertoires ou fichiers

Disons, par exemple, nous voulons compresser le répertoire sample_dir, le répertoire Java_test et le fichier abc.py dans un fichier tar nommé 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

enter image description here

Créez un fichier archive .bzip2 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 indicateur supplémentaire -f à la commande. Voici ce que signifie réellement l'indicateur -f

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

enter image description here

Extrait .tar fichier archive

Nous pouvons extraire ou décompresser le fichier compressé à l'aide de la commande tar. La commande ci-dessous extraira le contenu de sample_dir.tar dans le répertoire actuel.

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

enter image description here

La commande suivante extraira ou annulera les fichiers du répertoire spécifié, à savoir /home/codebind/dir_name 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 indicateur supplémentaire -C à la commande. Voici ce que signifie réellement l'indicateur -C

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

enter image description here

9
M.A.K. Ripon