aboutsummaryrefslogtreecommitdiff
path: root/.scripts/ext
diff options
context:
space:
mode:
Diffstat (limited to '.scripts/ext')
-rwxr-xr-x.scripts/ext29
1 files changed, 29 insertions, 0 deletions
diff --git a/.scripts/ext b/.scripts/ext
new file mode 100755
index 0000000..4b85f88
--- /dev/null
+++ b/.scripts/ext
@@ -0,0 +1,29 @@
+#!/usr/bin/env sh
+
+archive="$(readlink -f "$*")" &&
+ directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
+ mkdir -p "$directory" &&
+ cd "$directory" || exit
+
+[ "$archive" = "" ] && printf "Give archive to extract as argument\\n" && exit
+
+if [ -f "$archive" ]; then
+ case "$archive" in
+ *.tar.bz2 | *.tbz2) tar xvjf "$archive" ;;
+ *.tar.xz) tar -xf "$archive" ;;
+ *.tar.gz | *.tgz) tar xvzf "$archive" ;;
+ *.lzma) unlzma "$archive" ;;
+ *.bz2) bunzip2 "$archive" ;;
+ *.rar) unrar x -ad "$archive" ;;
+ *.gz) gunzip "$archive" ;;
+ *.tar) tar xvf "$archive" ;;
+ *.zip) unzip "$archive" ;;
+ *.Z) uncompress "$archive" ;;
+ *.7z) 7z x "$archive" ;;
+ *.xz) unxz "$archive" ;;
+ *.exe) cabextract "$archive" ;;
+ *) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
+ esac
+else
+ printf "File \"%s\" not found\\n" "$archive"
+fi