Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/zsh
- helpFunction()
- {
- echo ""
- echo "Usage: $0 archive.ext destination"
- echo "Extract an archive based on its extension."
- echo "\$1 required: archive to extract"
- echo "\$2 optional: directory to extract to"
- echo "By default extracts to the same name as \$1"
- exit 1
- }
- if [ $# -eq 0 ] || [ $# -gt 2 ]; then
- helpFunction
- fi
- # parse path/fileName.extension
- fileName=$(basename -- "$1")
- if [[ "$fileName" =~ \.tar\..* ]]; then
- extension="tar.${fileName##*.}"
- else
- extension="${fileName##*.}"
- fi
- extension=$(echo "$extension" | tr '[:upper:]' '[:lower:]')
- fileName="${fileName%.*}"
- # destination is $2 or simply the fileName
- directory=$fileName
- if [ -n "$2" ]; then
- directory=$2
- fi
- # make directory if it doesnt exist
- if [ ! -d "$directory" ] && [ ! -L "$directory" ]; then
- mkdir -p "$directory"
- fi
- # extract based on extension
- case "$extension" in
- tar.gz) tar -xzvf "$1" -C "$directory" ;;
- tar.bz2) tar -xjvf "$1" -C "$directory" ;;
- tar.xz) tar -xJvf "$1" -C "$directory" ;;
- tar) tar -xvf "$1" -C "$directory" ;;
- zip) unzip -d "$directory" "$1" ;;
- 7z) 7z x "$1" -o"$directory" ;;
- gz) gunzip -c "$1" > $directory ;;
- rar) unrar x "$1" "$directory" ;;
- iso) echo "Cannot extract ISO files, use a tool like mount."
- exit 1 ;;
- *) echo "Unsupported file extension: $extension"
- exit 1 ;;
- esac
- echo "Extraction completed successfully to $directory."
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement