Advertisement
MichalMMac

Rename Script

Jun 21st, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.05 KB | None | 0 0
  1. #!/bin/bash
  2. # Author: MichalM.Mac
  3. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  4.  
  5. # Vzor - Regulární výraz - Tenhle řetězec hledám
  6. PATTERN="^\([0-3]\{0,1\}[0-9]\)\. \([0-1]\{0,1\}[0-9]\)\. \([12][90][0-9][0-9]\)$"
  7.  
  8. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  9.  
  10. error_printer() {
  11.     echo "$@" 1>&2;
  12. }
  13.  
  14. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15.  
  16. rename(){
  17.     # Kontrola, zda už pod novým jménem něco neexistuje
  18.     if [ -e "$PATH_TO_DIR/$NEW_NAME" ]; then
  19.         error_printer "Error: Renaming unsuccessful, file already exists."
  20.         return 1
  21.     fi
  22.    
  23.     #echo "Old file: $1"
  24.     #echo "New file: $NEW_NAME"
  25.     mv "$1" "$PATH_TO_DIR/$NEW_NAME"
  26. }
  27.  
  28. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  29.  
  30. match(){
  31.     # Potřebuju rozdělit na cestu a název souboru
  32.     PATH_TO_DIR=$(dirname "$1")
  33.     FILE_NAME=$(basename "$1")
  34.  
  35.     # PATTERN sedí
  36.     if `echo $FILE_NAME | grep --silent "$PATTERN"`; then
  37.    
  38.         # Podle escapovaných závorech v PATTERNu vyberu části zmatchovaného stringu
  39.         DAY=`echo $FILE_NAME | sed "s/$PATTERN/\1/"`
  40.         DAY_ZEROED=$(printf "%02d" $DAY)
  41.         MONTH=`echo $FILE_NAME | sed "s/$PATTERN/\2"/`
  42.         MOTH_ZEROED=$(printf "%02d" $MONTH)
  43.         YEAR=`echo $FILE_NAME | sed "s/$PATTERN/\3/"`
  44.        
  45.         #FINÁLNÍ PRODUKT
  46.         NEW_NAME="$YEAR-$MOTH_ZEROED-$DAY_ZEROED"
  47.        
  48.         return 0
  49.     fi
  50.    
  51.     # PATTERN nesedí
  52.     return 1
  53. }
  54.  
  55. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  56. # Main Body
  57. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  58.  
  59. if [ $# -eq 0 ]; then
  60.     echo "Error: No Aruments specified -> Nothing to do."  
  61. fi 
  62.  
  63. # Postupné zpracování všech dodaných parametrů
  64. while [ $# -gt 0 ]
  65. do
  66.     # Pokud Argument vyhový všem podmínkám ...
  67.     if match "$1"
  68.         then
  69.             # ... tak ho přejmenujeme
  70.             rename "$1"
  71.         else
  72.             error_printer "Error: File $1 does not match pattern"  
  73.     fi
  74.    
  75.     shift
  76. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement