How to unzip a zip file from the Terminal?

  • Just downloaded a .zip file from the internet. I want to use the terminal to unzip the file. What is the correct way to do this?

    Extract all files from current folder, you can use: unzip \\*.zip

    @burtsevyg the backslash is not necessary there. It will make shell treat `\*` as literal star symbol. Just use `unzip *.zip` to make shell expand `*` to all files ending in `.zip`

    Using `*` alone didn't work for me. It caused `filename not matched` errors. `\*` did the job.

    I recommend you use & learn "unar" instead of a zip specific one, unless you need specific features. "Supported file formats include Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt and many other old and obscure formats. ".

    Ubuntu has multiple compress/decompress tools already installed. Run `apropos zip` from the console for the full list.

  • Kelley

    Kelley Correct answer

    9 years ago

    If the unzip command isn't already installed on your system, then run:

    sudo apt-get install unzip
    

    After installing the unzip utility, if you want to extract to a particular destination folder, you can use:

    unzip file.zip -d destination_folder
    

    If the source and destination directories are the same, you can simply do:

    unzip file.zip
    

    If you are already in the directory you want the file unzipped, omit the 2nd and 3rd arguments, i.e. `unzip /path/to/file.zip`

    I have just used this command. This is an example. Step 1 (I changed to the directory where the zip file is stored): `cd /home/paf/Copy/Programming/Javascript/Json` Step2 (I extract the zip file in the directory I have just mentioned): `unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json`

    Is there also a "...and visit that folder in terminal" possibility of some kind?

    Does this `unzip file.zip -d destination_folder` will also give all directory which start with .git and files . as start name ,Because this are hidden in Ubuntu .IF it will not extract them then how i can unzip them all from my zip file.

    `unzip` may be a default program. In other words, you may not need to install it.

    what does -d mean

    @Aevi Check man pages `[-d exdir] An optional directory to which to extract files.`

    Make sure you extract to a directory, unlike tar archives, you may find many people include dozens of files in their root directory of their zip files, this can make a real mess!!!

    I know we're not supposed to use the comments to say pointless things but wow, you got over 5000 in rep for teaching newbies how to unzip out of the terminal, bet you weren't expecting that when you wrote that answer.... :) +1

    How to do recursive unzip?, i.e., inside I have one more zip

  • You can simply use unzip.

    Install it:

    apt-get install unzip
    

    And use it:

    cd /path/to/file
    unzip file.zip
    
  • A more useful tool is 7z, which zips and unzips a range of compression formats, notably lzma, usually the protocol offering the highest compression rates.

    This command installs 7z:

    sudo apt-get install p7zip-full
    

    This command lists the contents of the zip:

    7z l zipfile.zip
    

    This command extracts the contents of the zip:

    7z x zipfile.zip
    

    `7z e` does not keep the directory structure - `7z x` does...

    13.10 says 7z does not exist. I think it must sudo apt-get install 7zip

    I think the install command should be `sudo apt-get install p7zip` or `sudo apt-get install p7zip-full` You need the full version to get the `7z` command. The full is also the only one who handles zip and other kinds of formats out of the two.

    could you clarify "A more useful tool"? Are you comparing to unzip? Could you provide any examples of features that make 7z more useful, and perhaps in which contexts 7z is preferred?

    For some unzip is more useful: easy to use and its Name to remember.

    @Chris how to extract to a specific location from `7z`?

    @Shy Robbiani easy != useful. 7zip supports a wide array of compression algorithms while unzip if specifically tailored to . There is also dtrx, which extracts pretty much any archive format without having to specify the specifics.

    @KasunSiyambalapitiya Is just pass the path as argument

  • You can use:

    unzip file.zip -d somedir
    

    to extract to yourpath/somedir

    If you want to extract to an absolute path, use

    sudo unzip file.zip -d /somedir
    
  • Using scripting tools: Perl and Python

    Many answers here mention tools that require installation, but nobody has mentioned that two of Ubuntu's scripting languages, Perl and Python, already come with all the necessary modules that allow you to unzip a zip archive, which means you don't need to install anything else. Just use either of the two scripts presented below to do the job. They're fairly short and can even be condensed to a one-liner command if we wanted to.

    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 
    

    or

    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
    

    or

    perl perlunzip.pl master.zip
    

    See also

    Thanks, exactly what I need. I don't have root and don't wanna install unzip manually from source. This also can be used with a bash one-liner which mostly will work (assuming no `'''` inside the file name): `unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }`

    @mxmlnkn Glad I could help :)

    This is great. I do not need to install anything extra.

    Just use ZipFile class, not PyZipFile, the latter have some specific support for compressing Python libraries

  • If the source and destination directories are the same, you can simply do:

    unzip filename.zip
    

    On Ubuntu 17.04, -d require for unknown reason.

  • I prefer bsdtar to unzip/zip. For extracting, they are pretty similar:

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

    However for zipping, bsdtar wins. Say you have this input:

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

    and want this in the zip file:

    alfa/four.txt
    bravo/four.txt
    

    This is easy with bsdtar:

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

    zip does not have the -d option like unzip, so you have no way to achieve the above unless you cd first.

    As much as I'd like to give the win to a foss tool, apparently `bsdtar` doesn't bode well with special characters like at least one in the word `Blóðstokkinn` when uncrompressing. I didn't even check when compressing. What a bummer. :/ `unzip` handled it without problem.

  • Here is the detailed description of options that I find useful:

    Command: unzip -[option] zip-path.
                   -d an optional directory to which to extract files  
                   -l List archive files.
                   -P password Use password to decrypt encrypted zipfile entries (if any).
                   -t Test archive files with cyclic redundancy check.  
                   -u Update the existing files.  
                   -z archive comment

    Also unzip -o for overwrite

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

    Install unzip ============= So First of all we need to install unzip on our system if it’s not installed. unzip command is used to extract files from a ZIP archive.

    Run the following command to install unzip

    sudo apt-get install unzip
    

    unzip Syntex

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

    Now Follow the steps below:

    UnZip File

    OPTION 1 – If the Zip File is in the same directory/folder in which your terminal is and we want to extract it in the present working directory.

    Use the following command to achieve the above described scenario

    sudo unzip zip_file_name.zip
    

    if the zip file is protected with some password, then use the following command :

    sudo ubzip -P zip_file_name.zip
    

    Please make sure you use -P (capital P) not -p because the are different options.

    OPTION 2 – If the zip file is not present in the same directory and we want to extract/unzip the file in different directory.

    Use the following command to achieve the above described scenario

    sudo unzip path/filename.zip -d another_path_or_same_path
    

    if we does not use option -d the file will be extracted to present working directory.

    And if the zip file is password protected we can also use -P.

    use tar Command in Linux / Unix

    tar is an acronym for Tape Archive. tar command is used to Manipulates archives in Linux/Unix. System administrators uses tar command frequently to rip a bunch of files or directories into highly compressed archive which are called tarball or tar, bzip and gzip in Linux/Unix system.

    tar Syntex

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

    Or

    tar required Flags

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

    tar optional Flags

    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]
    

    Examples

    Create tar Archive File by Compressing an Directory or a Single File

    The terminal command below will create a .tar file called sample_dir.tar with a directory /home/codebind/sample_dir or sample_dir in present working directory.

    [email protected]:~$  tar -cvf sample_dir.tar sample_dir
    sample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ ls
    sample_dir sample_dir.tar
    

    enter image description here

    Here’s what those flags (-cvf) actually mean

    -c, --create– create a new archive

    -x, --extract, --get– extract files from an archive

    -f, --file ARCHIVE– use archive file or device ARCHIVE

    Create tar.gz or tgz Archive File by Compressing an Directory or a Single File

    The terminal command below will create a .tar.gz file called sample_dir.tar.gz with a directory /home/codebind/sample_dir or sample_dir in present working directory.

    Notice that we have added extra flag -z to the command.Here’s what the flag -z actually mean

    -z, --gzip, --gunzip --ungzip– Compress the archive with gzip

    [email protected]:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ ls
    sample_dir sample_dir.tar.gz
    

    enter image description here

    The command bellow will create a .tgz file. One this to notice is tar.gz and tgz both are similar.

    [email protected]:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ ls
    sample_dir sample_dir.tgz
    

    Compressing Multiple Directories or Files at Once

    Let’s say, For example we want to compress the sample_dir directory, the java_test directory, and the abc.py file to a tar file called sample_dir.tar.gz.

    Run the following command to achieve the goal above.

    [email protected]:~$ 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
    [email protected]:~$ ls
    sample_dir java_test abc.py sample_dir.tar.gz
    

    enter image description here

    Create .bzip2 Archive File by Compressing an Directory or a Single File

    [email protected]:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
    sample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ 
    

    Notice that we have added extra flag -f to the command.Here’s what the flag -f actually mean

    -f, --file ARCHIVE– use archive file or device ARCHIVE

    enter image description here

    Extract .tar Archive File

    We can extract or untar the compressed file using the tar command. The command below will extract the contents of sample_dir.tar to the present directory.

    [email protected]:~$ tar -xvf sample_dir.tar
    sample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ 
    

    enter image description here

    The following command will extract or Untar files in specified Directory i.e. /home/codebind/dir_name in this case.

    [email protected]:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
    sample_dir/
    sample_dir/main.cpp
    sample_dir/sample.png
    sample_dir/output
    [email protected]:~$ 
    

    we have added extra flag -C to the command.Here’s what the flag -C actually mean

    -C, --directory DIR – change to directory DIR

    enter image description here

    Also, to check if zip/unzip are installed, use `zip -v` and `unzip -v`. If installed it will return something like `UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.` (plus several lines of additional info. If not installed, it will say something like `The program 'zip' is currently not installed. You can install it by typing: apt install zip`.

License under CC-BY-SA with attribution


Content dated before 6/26/2020 9:53 AM