Nautilus/Scripts/extract
Aus SchnallIchNet
< Nautilus | Scripts
Version vom 20. Dezember 2012, 11:48 Uhr von Cbs (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<pre> #!/bin/bash # # This script extracts archives by file-extension # to a directory specified in gdialog and # redirects stdout to a log file. # # Distributed…“)
#!/bin/bash # # This script extracts archives by file-extension # to a directory specified in gdialog and # redirects stdout to a log file. # # Distributed under the terms of GNU GPL version 2 or later # # Copyright (C) Christoph Steidl <chris@rubbish.de> # # Install in your ~/Nautilus/scripts directory. # Tested with Nautilus 3.x # Debug #set -x # /usr/bin/unrar [ -n "`which unrar`" ] && UNRAR="`which unrar` x -kb" || UNRAR="" [ -n "`which tar`" ] && TAR="`which tar`" || TAR="" [ -n "`which gunzip`" ] && GUNZIP="`which gunzip`" || GUNZIP="" [ -n "`which bunzip2`" ] && BUNZIP2="`which bunzip2`" || BUNZIP2="" [ -n "`which unzip`" ] && UNZIP="`which unzip`" || UNZIP="" [ -n "`which 7z`" ] && SEVENzip="`which 7z` x" || SEVENzip="" CURRENT_DIR=$(dirname "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"); FILE_NAME=$(basename "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"); FILE_EXT=$(echo "$FILE_NAME" | awk -F. '{s=NF-1; print $NF}'); FILE_EXT2=$(echo "$FILE_NAME" | awk -F. '{s=NF-1; print $s}'); case $FILE_EXT in rar|RAR) if [ -z "$UNRAR" ]; then zenity --info --text="UNRAR not found. Cannot continue."; exit 1; fi BINARY=$UNRAR; break; ;; gz|GZ) if [ "$FILE_EXT2" == "tar" -o "$FILE_EXT2" == "TAR" ]; then if [ -z "$TAR" ]; then zenity --info --text="TAR not found. Cannot continue."; exit 1; fi BINARY="$TAR -xvzf" else if [ -z "$GUNZIP" ]; then zenity --info --text="GUNZIP not found. Cannot continue."; exit 1; fi BINARY=$GUNZIP; fi break; ;; bz2|BZ2) if [ "$FILE_EXT2" == "tar" -o "$FILE_EXT2" == "TAR" ]; then if [ -z "$TAR" ]; then zenity --info --text="TAR not found. Cannot continue."; exit 1; fi BINARY="$TAR -xvjf" else if [ -z "$BUNZIP2" ]; then zenity --info --text="BUNZIP2 not found. Cannot continue."; exit 1; fi BINARY=$BUNZIP2; fi break; ;; tar|TAR) if [ -z "$TAR" ]; then zenity --info --text="TAR not found. Cannot continue."; exit 1; fi BINARY="$TAR -xvf" break; ;; zip|ZIP) if [ -z "$UNZIP" ]; then zenity --info --text="UNZIP not found. Cannot continue."; exit 1; fi BINARY=$UNZIP break; ;; 7z|7Z) if [ -z "$SEVENzip" ]; then zenity --info --text="7zip not found. Cannot continue."; exit 1; fi BINARY=$SEVENzip ;; *) echo "Unknown file-extension $FILE_EXT"; zenity --info --text="Unknown file-extension $FILE_EXT" exit 1; ;; esac DSTDIR=$(zenity --entry --text="extract file to..." --entry-text="$CURRENT_DIR/$FILE_NAME" 2>&1); if [ $? -ne 0 ]; then zenity --info --text="Action abort by User." exit 2 fi [ -d "$DSTDIR" ] || mkdir -p "$DSTDIR" cd "$DSTDIR"; $BINARY "$1" 2>&1 | /usr/bin/tee "$DSTDIR/$FILE_NAME".log | zenity --progress --text="extracting..." --auto-kill --pulsate --auto-close # --pulsate if [ -f "$DSTDIR/$FILE_NAME.log" ]; then zenity --text-info --filename="$DSTDIR/$FILE_NAME".log 2>&1 rm "$DSTDIR/$FILE_NAME".log fi exit 0;