Guest User

Untitled

a guest
Jan 8th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.03 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. DOWNLOADS='/home/anon/downloads'
  4. SORTED='/home/anon/stuff/dlsorted'
  5.  
  6. file -N --mime-type --print0 "$DOWNLOADS"/* |
  7. while read -r -d $'\0' path && read -r mime;
  8. do
  9.     if ! [ -f "$path" ]
  10.     then
  11.         continue
  12.     fi
  13.  
  14.     filename="${path##*/}"
  15.  
  16.     if ! [[ $mime =~ ^\:\ (.[a-z]*)/ ]]
  17.     then
  18.         echo "doesn't parse file output"
  19.         exit 1
  20.     fi
  21.  
  22.     mime=${BASH_REMATCH[1]}
  23.     mkdir -p "$SORTED/$mime"
  24.     if ! [ $? == 0 ]
  25.     then
  26.         exit 1
  27.     fi
  28.  
  29.     dest="$SORTED/$mime"
  30.  
  31.     if [ -e "$SORTED/$mime/$filename" ]
  32.     then
  33.         if ! [[ $filename =~ ^(.[^\.]*)(.*) ]]
  34.         then
  35.             echo "doesn't parse filename"
  36.             exit 1
  37.         fi
  38.  
  39.         name=${BASH_REMATCH[1]}
  40.         ext=${BASH_REMATCH[2]}
  41.  
  42.         for (( num=1; ; num++ ))
  43.         do
  44.             dest="$dest/${name}_($num)$ext"
  45.             if ! [ -e "$dest" ]
  46.             then
  47.                 break
  48.             fi
  49.         done
  50.     fi
  51.  
  52.     mv "$DOWNLOADS/$filename" "$dest"
  53. done
  54.  
  55. exit 0
Advertisement
Add Comment
Please, Sign In to add comment