Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Heavily modified after https://stackoverflow.com/questions/44951515/bash-find-duplicate-file-in-directory-and-rename
- TARGET="renamed"
- ext="pdf"
- for i in *.$ext
- do
- declare -i cnt=1 ## counter for filename_$cnt
- test -z "$i" && { ## validate one argument given
- printf "error: insufficient input\nusage: %s filename\n" "${0##*/}"
- exit 1
- }
- test -w "$i" || { ## validate valid filename is writeable
- printf "error: file not found or lack permission to move '%s'.\n" "$i"
- exit 1
- }
- DATUM=`pdfgrep 'Datum' "$i" | sed -e "s/\ .*Datum.\ *//;s/2019.*$/2019/g;s/^.P//;s/,/\./;s/\ //g"`
- OPERATION=`pdfgrep 'Operation.en' "$i" | sed -e "s/^.*Operation.en..//;s/^.\ *//;s/\ /_/g;s/,/_/g;s/__*/_/g;s/ä/ae/g;s/ü/ue/g;s/Ü/Ue/g;s/ö/oe/g"`
- if [ ! -z "$OPERATION" -a "$OPERATION" != " " ]
- then
- OPERATION="-$OPERATION"
- fi
- echo
- echo $DATUM
- echo
- echo $OPERATION
- echo
- if [[ $DATUM =~ ^(0[1-9]|[1-2][0-9]|3[0-1]).(0[1-9]|1[0-2]).[0-9]{4}$ ]]
- then
- echo "DATUM of $i is correct"
- else
- echo "DATUM has to fall back to $i"
- DATUM="${i%.*}"
- fi
- vfn="$DATUM$OPERATION.$ext" ## set valid filename = filename
- ## form valid filename e.g. "$fn_1.$ext" if duplicate found
- while test -e "$TARGET/$vfn"; do
- printf -v vfn "%s-%01d.%s" "$DATUM$OPERATION" "$((cnt++))" "$ext"
- done
- echo "$i" "$TARGET/$vfn" ## move file under non-conflicting name
- cp "$i" "$TARGET/$vfn" ## move file under non-conflicting name
- # cd $TARGET
- # k=1
- # while [[ `ls -1 | grep "$DATUM"` ]]
- # do
- # DATUM=$DATUM-$(expr $k + 1)
- # done
- # cd -
- # cp -n "$i" "$TARGET"/"$DATUM".pdf
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement