Advertisement
Guest User

UnRAR shell script for (multiple) RAR files

a guest
Oct 25th, 2012
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.81 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 "Extracting $1..."
  27.    unrar x -y "$1" 1>/dev/null 2>$error
  28.  
  29.    if [ ! -s $error ]; then
  30.  
  31.       ((extracted++))
  32.  
  33.       rm -f "$filename.sfv"
  34.       rm -f "$filename."${ext_to_delete[i-1]}
  35.  
  36.       if [ -f "$filename.bin" ]; then
  37.          echo "Converting..."
  38.          bchunk "$filename.bin" "$filename.cue" "$filename" 1>/dev/null 2>$error
  39.          if [ ! -f "${filename}02.cdr" ]; then
  40.             rm -f "$filename.bin" "$filename.cue"
  41.             mv "${filename}01.iso" "$filename.iso"
  42.          else
  43.             rm -f "${filename}01.iso"
  44.             rm "$filename"[0-9][0-9]".cdr"
  45.             echo "$filename.bin can't convert to .iso, it conains audio tracks!"
  46.          fi
  47.       fi
  48.    else
  49.       cat "$error" 2>/dev/null
  50.    fi
  51. }
  52.  
  53. do_it() {
  54.    if [ -z "$1" ]; then
  55.       for f in * ; do
  56.          if [ "$f" != ".." ] ; then
  57.             if cd "$f" 2>/dev/null; then
  58.                do_it
  59.                cd ..
  60.             elif [ -f "$f" ]; then
  61.                extract_it "$f"
  62.             fi
  63.          fi
  64.       done
  65.    else
  66.       extract_it "$1"
  67.    fi
  68. }
  69.  
  70. do_it "$1"
  71.  
  72. case $extracted in
  73.    0)
  74.       echo "Nothing to extract"
  75.    ;;
  76.    1)
  77.       echo "1 archive extraxted"
  78.    ;;
  79.    *)
  80.       echo "$extracted archives extraxted"
  81.    ;;
  82. esac
  83.  
  84. echo Done
  85. cat "$error" 2>/dev/null
  86. rm -f "$error"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement