Guest User

UnRAR shell script for (multiple) RAR files

a guest
Nov 13th, 2012
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.36 KB | None | 0 0
  1. #!/bin/bash
  2. #Thanks locsemege
  3.  
  4. ext=("001" "[pP][aA][rR][tT]*.[rR][aA][rR]" "[rR][aA][rR]")
  5. ext_to_delete=("[0-9][0-9][0-9]" "[pP][aA][rR][tT]*.[rR][aA][rR]" "[r-zR-Z][aA0-9][rR0-9]")
  6. error="$(mktemp)"
  7. extracted=0
  8.  
  9. extract_it() {
  10.  
  11.    local filename=""
  12.  
  13.    for i in $(seq ${#ext[@]}); do
  14.       filename="${1%.${ext[i-1]}}"
  15.       if [ "$filename" != "$1" ]; then
  16.          break
  17.       else
  18.          filename=""
  19.       fi
  20.    done
  21.  
  22.    if [ "$filename" = "" ]; then
  23.       return 0
  24.    fi
  25.  
  26.    echo -n "Extracting $PWD/$1... "
  27.    unrar x -y "$1" 1>/dev/null 2>$error
  28.  
  29.    if [ `stat --printf="%s" $error` -eq 0 ]; then
  30.  
  31.       echo "done"
  32.       ((extracted++))
  33.  
  34.       rm -f "$filename.sfv"
  35.       rm -f "$filename."${ext_to_delete[i-1]}
  36.    else
  37.       cat "$error"
  38.       echo
  39.    fi
  40. }
  41.  
  42. do_it() {
  43.    if [ -z "$1" ]; then
  44.       for f in * ; do
  45.          if [ "$f" != ".." ] ; then
  46.             if cd "$f" 2>/dev/null; then
  47.                do_it
  48.                cd ..
  49.             elif [ -f "$f" ]; then
  50.                extract_it "$f"
  51.             fi
  52.          fi
  53.       done
  54.    else
  55.       extract_it "$1"
  56.    fi
  57. }
  58.  
  59. do_it "$1"
  60.  
  61. case $extracted in
  62.    0)
  63.       echo "Nothing to extract"
  64.    ;;
  65.    1)
  66.       echo "1 archive extraxted"
  67.    ;;
  68.    *)
  69.       echo "$extracted archives extraxted"
  70.    ;;
  71. esac
  72.  
  73. echo Done
  74. cat "$error" 2>/dev/null
  75. rm -f "$error"
Advertisement
Add Comment
Please, Sign In to add comment