Skip to content

Instantly share code, notes, and snippets.

@jbman
Created August 5, 2011 06:54
Show Gist options
  • Save jbman/1127050 to your computer and use it in GitHub Desktop.
Save jbman/1127050 to your computer and use it in GitHub Desktop.
Bash file for loading and renaming photos from a digicam
#!/bin/bash
### Subroutines ###
# Prüft ob Pfad zu Bildern angegeben ist
assertCameraPathProvided() {
if [ -z "$1" ];
then
echo "Pfad zu Bildern auf der Kamera wird als erstes Argument benötigt (z.B. /media/disk/DCIM/100_FUJI)"
end;
fi
}
# Prüft ob Kamera angeschlossen
assertCameraPathAvailable() {
if [ ! -d "$1" ];
then
echo "Kamera nicht angeschlossen ($1 nicht gefunden)"
end;
else
echo "Pfad $1 wurde gefunden."
fi;
}
# Keine Eingabe? => Abbrechen
endIfInputEmpty() {
if [ -z "{$1}" ];
then
echo "Keine Eingabe."
end;
fi
}
end() {
echo "Skript wird nach Tastendruck beendet.";
read -n 1 -s
exit
}
openNautilus() {
echo "Nach Tastendruck wird der Ordner mit den Bildern wird geöffnet.";
read -n 1 -s
nautilus "$1"
exit
}
### Main ####
assertCameraPathProvided $1;
sourcedir=$1
datesuffix=$2
# ZUM TEST: "/home/johannes/Data/Scripts/DCIM/100_FUJI"
assertCameraPathAvailable $sourcedir;
year=$(date +%Y)
basedir="/home/johannes/Bilder/FOTOS/$year"
echo ""
echo "Bitte Beschreibung für Ordnernamen eingeben:";
while read inputline
do
description="$inputline"
endIfInputEmpty description;
datestr=$(date +%Y_%m%d)
targetdir="$basedir/$datestr$datesuffix $description"
echo "=================================================="
echo "Bilder werden verschoben.";
echo "Quelle: $sourcedir"
echo "Ziel: $targetdir";
echo "--------------------------------------------------"
mkdir "$targetdir";
pushd "$sourcedir" >/dev/null;
mv -i -v * "$targetdir";
popd >/dev/null;
echo "Verschieben der Bilder fertig.";
echo
echo "Bilder umbenennen nach Aufnahmezeitpunkt";
pushd "$targetdir" >/dev/null;
# .JPG umbenennen in .jpg
find -name "*.JPG" | while read a; do mv "$a" "${a%%.JPG}.jpg" ; done
# Nach Aufnahmezeitpunkt benennen
exiv2 rename -F -r %Y_%m%d_%H%M%S *.jpg
# .AVI umbenennen in <Modifictaion date>.avi
find -name "*.AVI" | while read a; do mv "$a" "`date -r $a +%Y_%m%d_%k%M%S`.avi" ; done
popd >/dev/null;
echo "=================================================="
echo
openNautilus "$targetdir";
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment