unzipper
A useful function to add to your ~/.bash_profile
or ~/.bashrc
file on macOS that automates custom unzipping of regular-zipped or gzipped files and folders on Mac.
This is a companion function/script to my zipper
function posted in a Gist here.
Add in your path as a full shell
script by copying all below and saving into a file named unzipper
located in your $PATH
(e.g. /usr/bin
), or copy and paste just the function into ~/.bash_profile
or ~/.bashrc
then restart Terminal.
#!/bin/sh
# unzipper
## Usage: zipper "$1", where "$1" is a zipped or gzipped file or folder to _unzip_.
unzipper () {
MY_FILE="$1"
FILE_B_OUT="$(file -b "$1")";
MY_FILE_CLEAN="$(basename "$1")";
#
MY_ZIP_TEST="$(basename "$MY_FILE" | grep ".zip$" | wc -l | sed 's/\ //g')";
MY_GZIP_TEST="$(basename "$MY_FILE" | grep ".gzip$" | wc -l | sed 's/\ //g')";
MY_GZ_TEST="$(basename "$MY_FILE" | grep ".gz$" | wc -l | sed 's/\ //g')";
MY_TAR_GZ_TEST="$(basename "$MY_FILE" | grep ".tar.gz$" | wc -l | sed 's/\ //g')";
#
if [[ "$FILE_B_OUT" != "directory" ]]; then
# .zip file:
if [[ "$MY_ZIP_TEST" = "1" ]] && [[ "$MY_GZIP_TEST" = "0" ]] && [[ "$MY_GZ_TEST" = "0" ]] && [[ "$MY_TAR_GZ_TEST" = "0" ]]; then
echo "Unzipping .zip file named ${MY_FILE_CLEAN} ..."
MACOSX_FOLDER_CHECK="$(ls -d ./__MACOSX/ | wc -l | sed 's/\ //g')";
if [[ "$MACOSX_FOLDER_CHECK" = "0" ]]; then
unzip "$MY_FILE_CLEAN" ;
MACOSX_FOLDER_CHECK="$(ls -d ./__MACOSX/ | wc -l | sed 's/\ //g')";
if [[ "$MACOSX_FOLDER_CHECK" != "0" ]]; then
rm -rf ./__MACOSX/ ;
fi
fi
fi
# .gz file:
if [[ "$MY_ZIP_TEST" = "0" ]] && [[ "$MY_GZIP_TEST" = "0" ]] && [[ "$MY_GZ_TEST" = "1" ]] && [[ "$MY_TAR_GZ_TEST" = "0" ]]; then
echo "Unzipping .gz file named ${MY_FILE_CLEAN} ..."
# Unzip gzipped (.gz) file while keeping original .gz file:
# usage: gzip -dk file.gz
# gzip -dk "$MY_FILE_CLEAN";
#
# Unzip gzipped (.gz) file while removing original .gz file:
gzip -d "$MY_FILE_CLEAN";
fi
# .tar.gz file:
if [[ "$MY_ZIP_TEST" = "0" ]] && [[ "$MY_GZIP_TEST" = "0" ]] && [[ "$MY_GZ_TEST" = "1" ]] && [[ "$MY_TAR_GZ_TEST" = "1" ]]; then
echo "Unzipping .tar.gz file (gzipped tarball) named ${MY_FILE_CLEAN} ..."
tar -xf "$MY_FILE_CLEAN";
fi
fi
}