A Comprehensive Guide to Unzipping and Zipping Files on Mac Using Terminal

If you’re a Mac user looking to harness the power of Terminal for unzipping and zipping files, you’ve come to the right place. Terminal offers precise control over file archives, and in this guide, we’ll walk you through the process of efficiently handling compressed files on your Mac.

Interesting Articles
How To Hide A File or Folder On A Mac
How to Open .rar Files on a Mac


Unzipping and zipping files using Terminal can be a game-changer in your Mac file management. It offers speed, precision, and flexibility, making it a valuable skill to acquire.

Understanding Terminal Basics

Before we dive into file operations, let’s get familiar with Terminal. Terminal is a text-based interface that allows you to interact with your Mac’s operating system using commands. It’s a powerful tool that gives you direct control over various system functions.

Unzipping Files with Terminal

Step 1: Launch Terminal

  • Open Terminal from your Applications or Utilities folder. You’ll see a command-line interface where you can enter commands.

Step 2: Navigate to the Folder

  • Use the ‘cd’ command to navigate to the folder containing your ZIP file. For example, to navigate to the Desktop, type: cd Desktop.

Step 3: Unzip the File

  • To unzip a file, use the ‘unzip’ command followed by the name of the ZIP file. For example, if your file is named ‘example.zip,’ type: unzip example.zip.

Step 4: Verify the Unzipped Files

  • Terminal will extract the contents of the ZIP file into the current directory. You can use the ‘ls’ command to list the files and verify that they are successfully unzipped.

Zipping Files and Folders with Terminal

Step 1: Navigate to the Folder

  • Use the ‘cd’ command to navigate to the folder containing the files or folder you want to zip.

Step 2: Create a ZIP Archive

  • To create a ZIP archive, use the ‘zip’ command followed by the desired archive name and the files or folders you want to include. For example, to create an archive named ‘my_archive.zip’ for all files and folders in a folder named ‘documents,’ type: zip -r my_archive.zip documents. 
  • You can also create a zip of all the files in your current directory with a command like zip -r my_archive.zip *.*.
  • Step 3: Verify the ZIP Archive
  • Terminal will create the ZIP archive in the current directory. You can use the ‘ls’ command to list the files and confirm that your ZIP file is created.

Exploring Zip Options:

When working with Terminal for file compression, you have access to a range of zip options. Here’s an explanation of each option:

1. -f: Freshen – Only Changed Files

  • Explanation: This option allows you to update the contents of an existing ZIP archive by adding only the files that have changed since the archive was last updated. It’s a way to keep your archive up-to-date with the latest versions of files.
  • Example: zip -f archive.zip file.txt

2. -u: Update – Changed or New Files

  • Explanation: The -u option is similar to -f, but it not only updates changed files but also adds new files to the archive. This is useful when you want to ensure that all recent changes and new additions are included in the ZIP archive.
  • Example: zip -u archive.zip newfile.txt

3. -d: Delete Entries in Zipfile

  • Explanation: This option allows you to delete specific entries (files or directories) from an existing ZIP archive. It can help you manage the contents of your archive more effectively.
  • Example: zip -d archive.zip file-to-delete.txt

4. -m: Move into Zipfile

  • Explanation: The -m option not only adds files to a ZIP archive but also deletes the original files from your system. This can be useful when you want to move files into an archive and remove them from your computer simultaneously.
  • Example: zip -m archive.zip file-to-move.txt

5. -r: Recurse into Directories

  • Explanation: When you use the -r option, the zip command will recursively include all files and subdirectories within the specified directories. This is handy for creating comprehensive ZIP archives of entire directory structures.
  • Example: zip -r archive.zip myfolder/

6. -j: Junk (Don’t Record) Directory Names

  • Explanation: By using the -j option, you can tell zip not to store directory names in the archive. This is useful when you want to create a flat ZIP file without preserving the directory structure.
  • Example: zip -j archive.zip directory/file.txt

7. -0 to -9: Compression Levels

  • Explanation: These options allow you to specify the compression level when creating a ZIP archive. -0 indicates no compression (store only), while -9 is the highest compression level (compress better). You can choose a level that balances between file size and compression speed.
  • Example: zip -6 archive.zip file.txt (Use compression level 6)

8. -q: Quiet Operation

  • Explanation: The -q option runs zip in quiet mode, suppressing normal (non-error) informational messages during compression or extraction. This is useful when you want a quieter operation.
  • Example: zip -q archive.zip file.txt

9. -v: Verbose Operation/Print Version Info

  • Explanation: -v makes zip run in verbose mode, providing more detailed information during compression or extraction. It can be helpful for debugging or when you want to see a detailed log of the process.
  • Example: zip -v archive.zip file.txt

10. -c: Add One-Line Comments

  • Explanation: You can add a one-line comment to your ZIP archive using this option. Comments can be used to provide additional information about the archive’s content or purpose.
  • Example: zip -c “Important files for project XYZ” archive.zip file.txt

11. -z: Add Zipfile Comment

  • Explanation: Similar to -c, -z allows you to add a comment to the ZIP archive. However, this comment can be longer and provide more detailed information about the archive.
  • Example: zip -z archive.zip “This archive contains files for backup”

12. -@: Read Names from Stdin

  • Explanation: With this option, you can read a list of file names or paths from standard input (stdin) and include them in the ZIP archive. This is useful when you have a list of files from another command or source.
  • Example: ls *.txt | zip -@ archive.zip

13. -o: Make Zipfile as Old as Latest Entry

  • Explanation: When you use -o, zip sets the archive’s modification time to match the latest file’s modification time. This can be helpful when you want to synchronize the archive’s timestamp with the newest file.
  • Example: zip -o archive.zip file.txt

14. -x: Exclude the Following Names

  • Explanation: -x allows you to specify files or patterns to exclude from the ZIP archive. Files matching the specified names or patterns will not be included.
  • Example: zip -x “*.log” archive.zip

15. i: Include Only the Following Names

  • Explanation: This option is the opposite of -x. You can use -i to specify files or patterns that should be included in the ZIP archive, excluding all others.
  • Example: zip -i “*.txt” archive.zip

16. -F to -FF: Fix Zipfile

  • Explanation: These options are used to attempt repairing a corrupted ZIP archive. The -F option tries a little harder, and -FF tries even harder to fix the archive. It’s useful when you encounter issues with a ZIP file’s integrity.
  • Example: zip -F archive.zip

17. -D: Do Not Add Directory Entries

  • Explanation: When you use -D, zip will not include directory entries in the archive. Only files will be stored, excluding directories.
  • Example: zip -D archive.zip directory/

18. -A: Adjust Self-Extracting Exe

  • Explanation: This option is used when creating self-extracting executable archives. It adjusts the self-extracting archive to match the environment in which it will be run.
  • Example: zip -A sfx-archive.exe files/

19. -J: Junk Zipfile Prefix (unzipsfx)

  • Explanation: -J is used when creating a self-extracting archive (unzipsfx). It specifies a prefix to be removed from the names of files when they are extracted.
  • Example: zip -J sfx-archive.exe files/

20. -T: Test Zipfile Integrity

  • Explanation: You can use this option to test the integrity of a ZIP archive. zip will check the archive for errors and report any issues it finds.
  • Example: zip -T archive.zip

21. -X: Exclude Extra File Attributes

  • Explanation: When creating a ZIP archive, -X can be used to exclude any extra file attributes or metadata associated with files. This can result in a more lightweight archive.
  • Example: zip -X archive.zip files/

22. -y: Store Symbolic Links as the Link

  • Explanation: When -y is used, symbolic links within the files or directories being added to the archive are stored as the links themselves rather than the referenced files.
  • Example: zip -y archive.zip symlink.txt

23. -e: Encrypt

  • Explanation: -e is used to encrypt the contents of the ZIP archive, providing security for the archived files. You’ll be prompted to enter a password for encryption.
  • Example: zip -e -P mypassword archive.zip files/

24. -n: Don’t Compress These Suffixes

  • Explanation: You can use -n to specify file suffixes that should not be compressed when creating the ZIP archive. This can be helpful for files that are already compressed or in a specific format.
  • Example: zip -n .jpg:.png archive.zip images/

25. -h2: Show More Help

  • Explanation: -h2 provides more detailed help information about the zip command and its options. It can be used to access additional documentation.
  • Example: zip -h2

Exploring Unzip Options:

Here’s the explanation of each options on how to unzip a file:

1. -p: Extract Files to Pipe, No Messages

  • Explanation: The `-p` option in `unzip` allows you to extract files from a ZIP archive and send them to the standard output (usually a pipe) without displaying any extraction messages.
  • Example: unzip -p archive.zip

2. -l: List Files in Short Format

  • Explanation: The `-l` option lists the files in the ZIP archive in a short format, providing basic information about the files such as their names, sizes, and timestamps.
  • Example: unzip -l archive.zip

3. -f: Freshen – Only Changed Files

  • Explanation: The `-f` option freshens existing files within a ZIP archive. It only extracts or updates files in the archive that are newer than their corresponding files on the disk.
  • Example: unzip -f archive.zip file.txt

4. -t: Test Compressed Archive Data

  • Explanation: The `-t` option is used to test the integrity of the compressed archive data in the ZIP file, ensuring that the archive is not corrupt.
  • Example: unzip -t archive.zip

5. -u: Update Files, Create If Necessary

  • Explanation: The `-u` option updates files in the ZIP archive and creates them if they don’t exist. It ensures that the files in the archive are up to date with the files on the disk.
  • Example: unzip -u archive.zip

6. -z: Display Archive Comment Only

  • Explanation: The `-z` option displays the archive comment of the ZIP file, providing information or notes about the archive.
  • Example: unzip -z archive.zip

7. -v: List Verbosely/Show Version Info

  • Explanation: The `-v` option lists the files in the ZIP archive in a verbose format, providing detailed information about each file. It can also show version information of the `unzip` utility.
  • Example: unzip -v archive.zip

8. -T: Timestamp Archive to Latest

  • Explanation: The `-T` option timestamps the archive to the latest timestamp found among the archived files. It updates the archive’s timestamp to match the newest file within it.
  • Example: unzip -T archive.zip

9. -x: Exclude Files That Follow (In xlist)

  • Explanation: The `-x` option allows you to exclude specific files from extraction by specifying their names or patterns in the xlist.
  • Example:  unzip -x file1.txt file2.txt archive.zip

10. -d: Extract Files Into exdir

  • Explanation: The `-d` option specifies the directory (exdir) where the extracted files from the ZIP archive will be placed.
  • Example: unzip -d destination_folder archive.zip


Congratulations! You’ve learned how to unzip and zip files on your Mac using Terminal. This newfound skill will empower you to efficiently manage compressed files, whether you’re extracting important documents or creating archives for storage or sharing.

With practice, you’ll become proficient in Terminal-based file operations, adding a valuable tool to your Mac toolkit. Enjoy the enhanced control and efficiency that Terminal offers for managing your files.