diff options
| author | Luke Smith <luke@lukesmith.xyz> | 2019-05-19 20:05:14 -0400 |
|---|---|---|
| committer | Luke Smith <luke@lukesmith.xyz> | 2019-05-19 20:05:14 -0400 |
| commit | c6e69e96421ebf192eb6de537324e269e7bfda78 (patch) | |
| tree | 47d34a5ff72d65be9a3e2c6aeb55a88da3a6fbd2 /.local/bin/extract | |
| parent | bf8c6b1e20f42a7725d8d919830fdb274596b20f (diff) | |
| download | eibhear-c6e69e96421ebf192eb6de537324e269e7bfda78.tar.gz eibhear-c6e69e96421ebf192eb6de537324e269e7bfda78.tar.zst eibhear-c6e69e96421ebf192eb6de537324e269e7bfda78.zip | |
massive cleanup
Diffstat (limited to '.local/bin/extract')
| -rwxr-xr-x | .local/bin/extract | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/.local/bin/extract b/.local/bin/extract new file mode 100755 index 0000000..a63ab10 --- /dev/null +++ b/.local/bin/extract @@ -0,0 +1,41 @@ +#!/bin/sh +# A general, all-purpose extraction script. +# +# Default behavior: Extract archive into new directory +# Behavior with `-c` option: Extract contents into current directory + +while getopts "hc" o; do case "${o}" in + c) extracthere="True" ;; + *) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit ;; +esac done + +if [ -z "$extracthere" ]; then + archive="$(readlink -f "$*")" && + directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" && + mkdir -p "$directory" && + cd "$directory" || exit +else + archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)")" +fi + +[ "$archive" = "" ] && printf "Give archive to extract as argument.\\n" && exit + +if [ -f "$archive" ] ; then + case "$archive" in + *.tar.bz2|*.tar.xz|*.tbz2) tar xvjf "$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 |
