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

1
bin/archive-extract Symbolic link
View File

@@ -0,0 +1 @@
archive-extract2folder

View File

@@ -1,8 +1,36 @@
#!/bin/bash #!/bin/bash
set -e 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 for arch in "$@"; do
if [[ ! -e "$arch" ]]; then
continue
fi
case "$arch" in case "$arch" in
*.tar) D="`basename "$arch" .tar`"; U="tar -x -v -f"; ;; *.tar) D="`basename "$arch" .tar`"; U="tar -x -v -f"; ;;
*.tar.gz) D="`basename "$arch" .tar.gz`"; U="tar -x -z -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"; ;; *.tar.bz2) D="`basename "$arch" .tar.bz2`"; U="tar -x -j -v -f"; ;;
*.zip) D="`basename "$arch" .zip`"; U="unzip"; ;; *.zip) D="`basename "$arch" .zip`"; U="unzip"; ;;
*.rar) D="`basename "$arch" .rar`"; U="unrar x"; ;; *.rar) D="`basename "$arch" .rar`"; U="unrar x"; ;;
*)
echo "Cannot extract file $arch"
;;
esac 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/?" echo "extract $arch to $PWD/$D/?"
read foo read foo
else else
echo "extracting $arch to $PWD/$D/" echo "extracting $arch to $PWD/$D/"
fi fi
if [[ "$self" = "archive-extract2folder" ]]; then
mkdir -p "$D" mkdir -p "$D"
archive=$( realpath "$arch" )
pushd "$D" pushd "$D"
$U "$archive" $U "$archive"
popd popd
fi
if [[ "$self" = "archive-extract" ]]; then
$U "$archive"
fi
done done
sleep 1