update different scripts
This commit is contained in:
parent
b2e163ff43
commit
61eaf8f5c6
3 changed files with 5 additions and 323 deletions
322
addDateTaken.sh
322
addDateTaken.sh
|
@ -1,322 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#todo: bei jeder Aenderung auch usage (doc) anpassen
|
|
||||||
#todo: translate entire script into english
|
|
||||||
|
|
||||||
|
|
||||||
# adds date taken in beginning of file name if jpg, .png, (not yet: .mp4, .mov, ...)
|
|
||||||
|
|
||||||
# Attention: there is a hard link to this script at the end!!! moving this script meens changing it
|
|
||||||
|
|
||||||
# options
|
|
||||||
# -h --help display help
|
|
||||||
# -a --noask --no-interactive do not prompt the user to confirm renaming
|
|
||||||
# -l --onlylog just logs what would have been done but not doing anything
|
|
||||||
# -o [file] --outputfile [file] specifies the output (log) file (standard is da.log)
|
|
||||||
# -v [file] --voutputfile [file] specifies the verbose output log file (standard dav.log)
|
|
||||||
# -q --quiet do not log
|
|
||||||
|
|
||||||
#Functions
|
|
||||||
vLog()
|
|
||||||
{
|
|
||||||
echo "$1" >> "$VLOGFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
log()
|
|
||||||
{
|
|
||||||
echo "$1" >> "$NVLOGFILE"
|
|
||||||
echo "$1" >> "$VLOGFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
rename()
|
|
||||||
# moves $1 to $2 if rn is 1, otherwise set variable new to $1
|
|
||||||
# log move on any case
|
|
||||||
{
|
|
||||||
if test -e "$2"
|
|
||||||
then
|
|
||||||
log "do not move \"$1\" to \"$2\" since it already exists."
|
|
||||||
else
|
|
||||||
log "rn \"$1\" to \"$2\""
|
|
||||||
if [ $rn -eq 1 ]
|
|
||||||
then
|
|
||||||
mv -- "$1" "$2"
|
|
||||||
else
|
|
||||||
new="$1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
remove()
|
|
||||||
# deletes $1 if rn is 1, otherwise only logging
|
|
||||||
{
|
|
||||||
if test -f "$1"
|
|
||||||
then
|
|
||||||
#echo "$1"
|
|
||||||
log "rm \"$1\""
|
|
||||||
if test $rn -eq 1
|
|
||||||
then
|
|
||||||
trash "$1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
usage()
|
|
||||||
# displays help message and exit
|
|
||||||
{
|
|
||||||
echo ""
|
|
||||||
echo "help page for $0"
|
|
||||||
echo "---------------------------------"
|
|
||||||
echo "this script should not be called directly but by the Wrapper script WrapperAddDateTaken.sh"
|
|
||||||
echo "Usage: bash $0 [OPTIONS] DIR"
|
|
||||||
echo " $0 adds the date the picture was taken or movie was filmed at the beginning of the file name."
|
|
||||||
echo ""
|
|
||||||
echo "options"
|
|
||||||
echo " -h, --help display this help"
|
|
||||||
echo " -a, --noask --no-interactive do not prompt the user to confirm renaming (standard is asking for each file)"
|
|
||||||
echo " -l, --onlylog just logs what would have been done but not doing anything"
|
|
||||||
echo " -o [file], --outputfile [file] specifies the output (log) file (standard is da.log)"
|
|
||||||
echo " -v [file], --voutputfile [file] specifies the verbose output log file (standard dav.log)"
|
|
||||||
echo " - q, --quiet do not log"
|
|
||||||
echo " -- finishes the list of options, next argument is taken as the dir"
|
|
||||||
#echo " -i, --image adds date taken in beginning of file name if jpg, .png, (not yet: .mp4, .mov, ...)"
|
|
||||||
echo ""
|
|
||||||
echo "error handling"
|
|
||||||
echo " if DIR is no valid directory, the scripts eith error code 1"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
folderloc()
|
|
||||||
# returns the argument as absolute path
|
|
||||||
# arg1: if arg1 starts with /, return arg1, otherwise return $(pwd)/arg1
|
|
||||||
{
|
|
||||||
case "$1" in
|
|
||||||
/* ) echo "$1"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
* ) echo "$(pwd)/$1"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# considering options
|
|
||||||
# saving all options to give them recursively
|
|
||||||
ops=""
|
|
||||||
# standard behavior: ask the user is file is to be renamed
|
|
||||||
# 0 meens not asking
|
|
||||||
ask=1
|
|
||||||
# standard behavior: actually rename
|
|
||||||
# 0 meens not renaming but just log what would have be done
|
|
||||||
rn=1
|
|
||||||
# standard behaviour: rename as usual
|
|
||||||
# 1 meens adding date taken to image and video files
|
|
||||||
# image=0
|
|
||||||
# the log file for verbose logging
|
|
||||||
#VLOGFILE="$1"
|
|
||||||
VLOGFILE="$(pwd)"/../rnv.log
|
|
||||||
# the log file for short logging
|
|
||||||
#NVLOGFILE="$2"
|
|
||||||
NVLOGFILE="$(pwd)"/../rn.log
|
|
||||||
|
|
||||||
#directory to be checked
|
|
||||||
dir="$(pwd)" # standard if not specified
|
|
||||||
|
|
||||||
# -n = string is non-zero length?
|
|
||||||
while test -n "$1" ; do
|
|
||||||
case $1 in
|
|
||||||
-h | --help ) usage;;
|
|
||||||
-o | --outputfile ) # ops="$ops -o ../$2"
|
|
||||||
shift
|
|
||||||
NVLOGFILE="$(folderloc "$1")"
|
|
||||||
;;
|
|
||||||
-v | --voutputfile ) #ops="$ops -v ../$2"
|
|
||||||
shift
|
|
||||||
VLOGFILE="$(folderloc "$1")"
|
|
||||||
;;
|
|
||||||
-q | --quiet ) VLOGFILE="/dev/null"
|
|
||||||
NVLOGFILE="/dev/null"
|
|
||||||
;;
|
|
||||||
-a | --noask | --no-interactive ) ops="$ops -a"
|
|
||||||
ask=0
|
|
||||||
;;
|
|
||||||
-l | --onlylog ) ops="$ops -l"
|
|
||||||
rn=0
|
|
||||||
;;
|
|
||||||
-- ) shift
|
|
||||||
dir="$(folderloc "$1")"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
* ) dir="$(folderloc "$1")"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift # must be done in any case: the next argument is $1
|
|
||||||
done
|
|
||||||
|
|
||||||
# echo "options"
|
|
||||||
# echo "asking=$ask"
|
|
||||||
# echo "rename=$rn"
|
|
||||||
# echo "log file=$NVLOGFILE"
|
|
||||||
# echo "verbose log file=$VLOGFILE"
|
|
||||||
# echo "direc=$dir"
|
|
||||||
|
|
||||||
#for testing purposes:
|
|
||||||
# exit
|
|
||||||
|
|
||||||
addDates()
|
|
||||||
# adds the picture taken dates to all pictures and descends into subfolders
|
|
||||||
{
|
|
||||||
for fil in *
|
|
||||||
do
|
|
||||||
if test -d "$fil"
|
|
||||||
then
|
|
||||||
cd "$fil"
|
|
||||||
addDates
|
|
||||||
cd ..
|
|
||||||
vLog "went back to $(pwd)"
|
|
||||||
|
|
||||||
continue
|
|
||||||
#vLog "handle dir"
|
|
||||||
# * als einziger Dateiname kommt auch bei leerem Ordner vor
|
|
||||||
fi
|
|
||||||
if test -e "$fil" # file to be moved exists
|
|
||||||
then
|
|
||||||
: # ok, do what comes after fi
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
case "$fil" in
|
|
||||||
20[12][0-9]_[01][0-9]_[0-3][0-9]*)
|
|
||||||
vLog "dont rename bc already date there: $fil";;
|
|
||||||
*.[jJ][pP][gG]|*.[jJ][pP][eE][gG]|*.[pP][nN][gG]|*.[mM][oO][Vv]|*.mp4) #|*.3gp|*.[aA][vV][iI])
|
|
||||||
date=$(exiftool -dateFormat "%Y_%m_%d_%H%M%S" -CreateDate "$fil" | awk '{print $4}')
|
|
||||||
# -z length is zero
|
|
||||||
if test -z "$date"
|
|
||||||
then
|
|
||||||
vLog "the file has no creation date: $fil"
|
|
||||||
else
|
|
||||||
# remove SAM_Zahl
|
|
||||||
new="$(echo "$fil" | sed 's/SAM_[0-9]\{4\}//')"
|
|
||||||
# remove DSC_Zahl (e.g. Hollys camera)
|
|
||||||
new="$(echo "$new" | sed 's/DSC_[0-9]\{4\}//')"
|
|
||||||
# remove DSCZaahl
|
|
||||||
new="$(echo "$new" | sed 's/DSC[0-9]\{5\}//')"
|
|
||||||
# remove DSCFZahl
|
|
||||||
new="$(echo "$new" | sed 's/DSCF[0-9]\{4\}//')"
|
|
||||||
# remove DSCIZahl
|
|
||||||
new="$(echo "$new" | sed 's/DSCI[0-9]\{4\}//')"
|
|
||||||
# remove DSCNZahl
|
|
||||||
new="$(echo "$new" | sed 's/DSCN[0-9]\{4\}//')"
|
|
||||||
# remove IMGPZahl (e.g. Romy Fischers camera)
|
|
||||||
new="$(echo "$new" | sed 's/IMGP[0-9]\{4\}//')"
|
|
||||||
#remove Zah-Zahl_IMG
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{3\}-[0-9]\{4\}_IMG//')"
|
|
||||||
# remove IMG_Daaatuum_Zeeiit (e.g. my smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/IMG_20[0-9]\{6\}_[0-9]\{6\}//')"
|
|
||||||
# and VID_... and PANO... (e.g. Veros smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/VID_20[0-9]\{6\}_[0-9]\{6\}//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms.PANO (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}\.PANO//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms.NIGHT (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}\.NIGHT//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms.LS (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}\.LS//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms.MP (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}\.MP//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}//')"
|
|
||||||
# remove PXL_Daaatuum_Zeitmitms.MP (e.g. Berits Pixel smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/PXL_20[0-9]\{6\}_[0-9]\{9\}\.MP//')"
|
|
||||||
# remove IMG_Zahl
|
|
||||||
new="$(echo "$new" | sed 's/IMG_[0-9]\{4\}//')"
|
|
||||||
# remove PZaaaahl
|
|
||||||
new="$(echo "$new" | sed 's/P[0-9]\{7\}//')"
|
|
||||||
# remove PCZaaahl
|
|
||||||
new="$(echo "$new" | sed 's/P[ABC][0-9]\{6\}//')"
|
|
||||||
# remove PICTZahl
|
|
||||||
new="$(echo "$new" | sed 's/PICT[0-9]\{4\}//')"
|
|
||||||
# remove SDCZaahl
|
|
||||||
new="$(echo "$new" | sed 's/SDC[0-9]\{5\}//')"
|
|
||||||
# remove RIMGZahl
|
|
||||||
new="$(echo "$new" | sed 's/RIMG[0-9]\{4\}//')"
|
|
||||||
# remove Zaaaaaahhhhhl (Paul)
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{13\}//')"
|
|
||||||
# remove Zaaaaaaaaahl_0Mbelieb--.Z (my smart phone at second bluetooth copy)
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{14\}_0M.\{6\}\--\.[1-9]//')"
|
|
||||||
# remove 0beliebi--.Z (my smart phone)
|
|
||||||
new="$(echo "$new" | sed 's/0.\{7\}--\.[1-9]//')"
|
|
||||||
# remove 0CLxbelb--.Z (my smart phone)
|
|
||||||
new="$(echo "$new" | sed 's/0CLx.\{6\}--\.[1-9]//')"
|
|
||||||
# remove zaaahhhl_zaahhl HDR~2 (Pauls Smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{8\}_[0-9]\{6\}\(_HDR\)\?\(~2\)\?//')"
|
|
||||||
# remove FotoZahl
|
|
||||||
new="$(echo "$new" | sed 's/Foto[0-9]\{4\}//')"
|
|
||||||
# remove zaaaahhhl_zaahhl (Baptistes smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{9\}_[0-9]\{6\}//')"
|
|
||||||
# remove zaaahhhl_zaahhl (Sushs smartphone)
|
|
||||||
new="$(echo "$new" | sed 's/[0-9]\{8\}_[0-9]\{6\}//')"
|
|
||||||
# remove [0-9A-Z]x8-([]x4-)x3-[]x12
|
|
||||||
new="$(echo "$new" | sed 's/[0-9A-Z]\{8\}-\([0-9A-Z]\{4\}-\)\{3\}[0-9A-Z]\{12\}//')"
|
|
||||||
# remove D7C_zahl (Kanthaus camera)
|
|
||||||
new="$(echo "$new" | sed 's/D7C_[0-9]\{4\}//')"
|
|
||||||
# remove _MG_zahl (Kanthaus Canon camera)
|
|
||||||
new="$(echo "$new" | sed 's/_MG_[0-9]\{4\}//')"
|
|
||||||
# hochzeitsbilder 180505_Za_Hochzeit (Z)
|
|
||||||
new="$(echo "$new" | sed 's/180505_[01][0-9]_Hochzeit ([0-9]*)/Hochzeit/')"
|
|
||||||
case "$new" in
|
|
||||||
_*|.*) ;; #tue nichts
|
|
||||||
*)
|
|
||||||
new="_$new";;
|
|
||||||
esac
|
|
||||||
new="$date$new" # date und _ haben keine Leerzeichen
|
|
||||||
|
|
||||||
# different jpeg extensions:
|
|
||||||
new="$(echo "$new" | sed 's/\.JPG/.jpg/g')"
|
|
||||||
new="$(echo "$new" | sed 's/\.JPEG/.jpg/g')"
|
|
||||||
new="$(echo "$new" | sed 's/\.jpeg/.jpg/g')"
|
|
||||||
|
|
||||||
# existiert eine Datei mit dem neuen Namen bereits?
|
|
||||||
# -e ist exist. die Datei schon?
|
|
||||||
if test -e "$new"
|
|
||||||
then
|
|
||||||
log "a file with name \"$new\" already exists, -> dont rename: $fil"
|
|
||||||
else
|
|
||||||
if test $ask -eq 0
|
|
||||||
then
|
|
||||||
rename "$fil" "$new"
|
|
||||||
else
|
|
||||||
# Abfrage ob man wirklich umbenennen will
|
|
||||||
echo "rename $fil to $new? enter, y, yes = yes"
|
|
||||||
read q
|
|
||||||
if test -z "$q" -o "$q" = "y" -o "$q" = "yes"
|
|
||||||
then
|
|
||||||
rename "$fil" "$new"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*) vLog "dont rename bc no image: $fil"
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
#actual script
|
|
||||||
|
|
||||||
# check if the argument is correct:
|
|
||||||
if test ! -d "$dir"
|
|
||||||
then
|
|
||||||
log "exiting bc there is no such dir as $dir"
|
|
||||||
#echo "exiting bc there is no such dir"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
vLog "move to $dir"
|
|
||||||
cd "$dir"
|
|
||||||
|
|
||||||
addDates
|
|
||||||
|
|
||||||
# merke: in Bedingungsklammern [] von if muss am Anfang und am Ende ein " " (blank) stehen!!
|
|
||||||
# merke: Hinweise zu Bedingungen in if abrufbar unter "man test"
|
|
||||||
# merke: bei Zuweisungen mit = darf zwischen Variablenname und = kein Leerzweichen sein!
|
|
||||||
# (sonst wird Variablenname als command interpretiert)
|
|
|
@ -77,9 +77,11 @@ REPLACEMENTS = {'\n': REPLACER,
|
||||||
r'"': "",
|
r'"': "",
|
||||||
r"`": "",
|
r"`": "",
|
||||||
r"´": "",
|
r"´": "",
|
||||||
|
r"+": REPLACER + "und" + REPLACER,
|
||||||
r"&": REPLACER + "und" + REPLACER,
|
r"&": REPLACER + "und" + REPLACER,
|
||||||
r"%": "Prozent" + REPLACER,
|
r"%": "Prozent" + REPLACER,
|
||||||
r"*": "x",
|
r"*": "x",
|
||||||
|
r"=": "-",
|
||||||
r"(with lyrics)": "",
|
r"(with lyrics)": "",
|
||||||
r" ": REPLACER,
|
r" ": REPLACER,
|
||||||
r"C#": "C_sharp",
|
r"C#": "C_sharp",
|
||||||
|
@ -99,6 +101,7 @@ REPLACEMENTS = {'\n': REPLACER,
|
||||||
r"?": REPLACER,
|
r"?": REPLACER,
|
||||||
r""": REPLACER,
|
r""": REPLACER,
|
||||||
r"?": REPLACER,
|
r"?": REPLACER,
|
||||||
|
r"!": REPLACER,
|
||||||
r"⧸": REPLACER,
|
r"⧸": REPLACER,
|
||||||
r":": REPLACER,
|
r":": REPLACER,
|
||||||
r">": REPLACER,
|
r">": REPLACER,
|
||||||
|
|
|
@ -23,7 +23,8 @@ createdExtensions = ["aux", "fls", "log", "synctex.gz",
|
||||||
"out", "blg", "bcf", "lco", "vrb", "snm",
|
"out", "blg", "bcf", "lco", "vrb", "snm",
|
||||||
"nav", "auxlock", "upb", "upa", "glg", "glo",
|
"nav", "auxlock", "upb", "upa", "glg", "glo",
|
||||||
"gls", "glsdefs", "idx", "ilg", "ind", "ist",
|
"gls", "glsdefs", "idx", "ilg", "ind", "ist",
|
||||||
"fdb_latexmk", "pdf"]
|
"fdb_latexmk", "unq", "bbl", "blg", "loe"#, "pdf"
|
||||||
|
]
|
||||||
|
|
||||||
# first check for command line arguments
|
# first check for command line arguments
|
||||||
parser = ArgumentParser(description="Remove by latex created files.")
|
parser = ArgumentParser(description="Remove by latex created files.")
|
||||||
|
|
Loading…
Reference in a new issue