dotfiles/shell/extract.sh

63 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/sh
2017-01-26 13:48:55 +01:00
x() {
2021-12-06 12:41:02 +01:00
for zipfile in "$@"; do
_x_extractor
2017-01-26 13:48:55 +01:00
if [ -f "$zipfile" ]; then
case "$zipfile" in
*.deb)
2021-12-06 12:41:02 +01:00
_x_extractor="ar x" ;;
2017-01-26 13:48:55 +01:00
*.tar.lrz)
2021-12-06 12:41:02 +01:00
_x_extractor="lrztar -d" ;;
2017-01-26 13:48:55 +01:00
*.lrz)
2021-12-06 12:41:02 +01:00
_x_extractor="lrunzip" ;;
2017-01-26 13:48:55 +01:00
*.tar.bz2)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar xjf" ;;
2017-01-26 13:48:55 +01:00
*.bz2)
2021-12-06 12:41:02 +01:00
_x_extractor="bunzip2" ;;
2017-01-26 13:48:55 +01:00
*.tar.gz)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar xzf" ;;
2017-01-26 13:48:55 +01:00
*.gz)
2021-12-06 12:41:02 +01:00
_x_extractor="gunzip" ;;
2017-01-26 13:48:55 +01:00
*.tar.xz)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar Jxf" ;;
2017-01-26 13:48:55 +01:00
*.xz)
2021-12-06 12:41:02 +01:00
_x_extractor="xz -d" ;;
2017-01-26 13:48:55 +01:00
*.rar)
2021-12-06 12:41:02 +01:00
_x_extractor="unrar e" ;;
2017-01-26 13:48:55 +01:00
*.tar)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar xf" ;;
2017-01-26 13:48:55 +01:00
*.tbz2)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar xjf" ;;
2017-01-26 13:48:55 +01:00
*.tgz)
2021-12-06 12:41:02 +01:00
_x_extractor="bsdtar xzf" ;;
2017-01-26 13:48:55 +01:00
*.zip)
2021-12-06 12:41:02 +01:00
_x_extractor="unzip" ;;
2017-01-26 13:48:55 +01:00
*.Z)
2021-12-06 12:41:02 +01:00
_x_extractor="uncompress" ;;
2017-01-26 13:48:55 +01:00
*.7z)
2021-12-06 12:41:02 +01:00
_x_extractor="7z x" ;;
2017-01-26 13:48:55 +01:00
*)
echo "Cannot extract '$zipfile': No extractor for filetype known ..." >&2
return 1
;;
esac
2021-12-06 12:41:02 +01:00
if ! command -v "$(echo "$_x_extractor" | awk '{print $1}')" >/dev/null 2>/dev/null; then
echo "Cannot extract '$zipfile': Cannot find extractor '$(echo "$_x_extractor" | awk '{print $1}')'." >&2
2017-01-26 13:48:55 +01:00
return 1
fi
echo "Extracting '$zipfile'..." >&2
2021-12-06 12:41:02 +01:00
eval "$_x_extractor" "$zipfile"
2017-01-26 13:48:55 +01:00
elif [ ! -e "$zipfile" ]; then
echo "Cannot extract '$zipfile': File does not exist!"
return 1
else
echo "Cannot extract '$zipfile': Not a valid file!"
return 1
fi
done
}