Christoph Polcin

ZSH Archive Function

This simple shell function creates various archives dependent on the file extension.
Supported extensions: tar.bz2, tar.gz, tar.xz, tar.lzma, bz2, gz, tar, tbz2, tgz, zip, 7z

useage: pack archive.extension [file|dir]+

function pack() {
    # www.christoph-polcin.com
    if [[ $# -lt 2 ]]; then
        echo "usage:  pack archive.extension [dir|file]+"
        return 1
    fi

    [[ -f $1 ]] && echo "error: destination $1 already exists." && return 1

    local lower
    lower=${(L)1}
    case $lower in
        *.tar.bz2) tar cvjf $@;;
        *.tar.gz) tar cvzf $@;;
        *.tar.xz) tar cvJf $@;;
        *.tar.lzma) tar --lzma -cvf $@;;
        *.bz2) 7za a -tbzip2 $@;;
        *.gz) 7za a -tgzip $@;;
        *.tar) tar cvf $@;;
        *.tbz2) tar cvjf $@;;
        *.tgz) tar cvzf $@;;
        *.zip) zip -r $@;;
        *.7z) 7za a -t7z -mmt $@;;
        *) echo "'$1' unsupported archive format / extension.";;
    esac
}