71 lines
1.8 KiB
Bash
Executable File
71 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
_help() {
|
|
echo 'Usage:
|
|
|
|
archive-extract2folder [--ask] [arch1] [arch2] ...
|
|
Extracts archives (tar/tgz/tar.Z/zip/rar) to folder arch1/ creating an extra folder level
|
|
|
|
archive-extract [--ask] [arch1] [arch2] ...
|
|
Extracts archives (tar/tgz/tar.Z/zip/rar) to the current folder
|
|
|
|
Arguments:
|
|
--ask Ask before extracting
|
|
'
|
|
exit
|
|
}
|
|
|
|
ASK=0
|
|
[[ -z "$1" ]] && _help
|
|
for (( i=1; i<=$#; i++ )); do
|
|
[[ ${!i} = "-h" ]] && _help
|
|
[[ ${!i} = "--help" ]] && _help
|
|
[[ ${!i} = "--ask" ]] && ASK=1
|
|
done
|
|
self=$( basename $0 )
|
|
|
|
for arch in "$@"; do
|
|
if [[ ! -e "$arch" ]]; then
|
|
continue
|
|
fi
|
|
case "$arch" in
|
|
*.tar) D="`basename "$arch" .tar`"; U="tar -x -v -f"; ;;
|
|
*.tar.gz) D="`basename "$arch" .tar.gz`"; U="tar -x -z -v -f"; ;;
|
|
*.tgz) D="`basename "$arch" .tgz`"; U="tar -x -z -v -f"; ;;
|
|
*.tar.Z) D="`basename "$arch" .tar.Z`"; U="tar -x -Z -v -f"; ;;
|
|
*.tar.z) D="`basename "$arch" .tar.z`"; U="tar -x -Z -v -f"; ;;
|
|
*.tar.bz2) D="`basename "$arch" .tar.bz2`"; U="tar -x -j -v -f"; ;;
|
|
*.zip) D="`basename "$arch" .zip`"; U="unzip"; ;;
|
|
*.rar) D="`basename "$arch" .rar`"; U="unrar x"; ;;
|
|
*)
|
|
echo "Cannot extract file $arch"
|
|
;;
|
|
esac
|
|
archive=$( realpath "$arch" )
|
|
if [[ "$self" = "archive-extract2folder" ]]; then
|
|
out_folder="$PWD/$D/"
|
|
fi
|
|
if [[ "$self" = "archive-extract" ]]; then
|
|
out_folder="$PWD/"
|
|
fi
|
|
|
|
if [[ "$ASK" == 1 ]]; then
|
|
echo "extract $arch to $PWD/$D/?"
|
|
read foo
|
|
else
|
|
echo "extracting $arch to $PWD/$D/"
|
|
fi
|
|
|
|
if [[ "$self" = "archive-extract2folder" ]]; then
|
|
mkdir -p "$D"
|
|
pushd "$D"
|
|
$U "$archive"
|
|
popd
|
|
fi
|
|
if [[ "$self" = "archive-extract" ]]; then
|
|
$U "$archive"
|
|
fi
|
|
done
|