Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Author: MichalM.Mac
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Vzor - Regulární výraz - Tenhle řetězec hledám
- PATTERN="^\([0-3]\{0,1\}[0-9]\)\. \([0-1]\{0,1\}[0-9]\)\. \([12][90][0-9][0-9]\)$"
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- error_printer() {
- echo "$@" 1>&2;
- }
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- rename(){
- # Kontrola, zda už pod novým jménem něco neexistuje
- if [ -e "$PATH_TO_DIR/$NEW_NAME" ]; then
- error_printer "Error: Renaming unsuccessful, file already exists."
- return 1
- fi
- #echo "Old file: $1"
- #echo "New file: $NEW_NAME"
- mv "$1" "$PATH_TO_DIR/$NEW_NAME"
- }
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- match(){
- # Potřebuju rozdělit na cestu a název souboru
- PATH_TO_DIR=$(dirname "$1")
- FILE_NAME=$(basename "$1")
- # PATTERN sedí
- if `echo $FILE_NAME | grep --silent "$PATTERN"`; then
- # Podle escapovaných závorech v PATTERNu vyberu části zmatchovaného stringu
- DAY=`echo $FILE_NAME | sed "s/$PATTERN/\1/"`
- DAY_ZEROED=$(printf "%02d" $DAY)
- MONTH=`echo $FILE_NAME | sed "s/$PATTERN/\2"/`
- MOTH_ZEROED=$(printf "%02d" $MONTH)
- YEAR=`echo $FILE_NAME | sed "s/$PATTERN/\3/"`
- #FINÁLNÍ PRODUKT
- NEW_NAME="$YEAR-$MOTH_ZEROED-$DAY_ZEROED"
- return 0
- fi
- # PATTERN nesedí
- return 1
- }
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Main Body
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- if [ $# -eq 0 ]; then
- echo "Error: No Aruments specified -> Nothing to do."
- fi
- # Postupné zpracování všech dodaných parametrů
- while [ $# -gt 0 ]
- do
- # Pokud Argument vyhový všem podmínkám ...
- if match "$1"
- then
- # ... tak ho přejmenujeme
- rename "$1"
- else
- error_printer "Error: File $1 does not match pattern"
- fi
- shift
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement