extractor improve

This commit is contained in:
Q
2025-08-30 13:41:45 +03:00
parent d378c2d1e9
commit 233a2ef688
2 changed files with 50 additions and 7 deletions

View File

@@ -1,8 +1,36 @@
#!/bin/bash
set -e
set -x
_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"; ;;
@@ -12,18 +40,32 @@ for arch in "$@"; do
*.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 [[ -z "$FORCE_EXTRACT" ]]; then
if [[ "$ASK" == 1 ]]; then
echo "extract $arch to $PWD/$D/?"
read foo
else
echo "extracting $arch to $PWD/$D/"
fi
mkdir -p "$D"
archive=$( realpath "$arch" )
pushd "$D"
$U "$archive"
popd
if [[ "$self" = "archive-extract2folder" ]]; then
mkdir -p "$D"
pushd "$D"
$U "$archive"
popd
fi
if [[ "$self" = "archive-extract" ]]; then
$U "$archive"
fi
done
sleep 1