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
}