Ben bezig met een scriptje dat foto's van een digicam moet gaan verwerken. Dit moet het doen:
Maar het werkt dus niet. Hij vindt een fout in het 'find' commando om de foto's te verkleinen, terwijl ik exact dezelfde syntax erboven gebruik om te kopiëren en dat gaat wel goed.
Dit is de output:
Wie ziet de fout(en)?
- lees onderwerp van reeks in
- maak map op bureaublad met naam datum-onderwerp
- kopieer alle foto's naar die map
- draai foto's op basis van EXIF info
- indien filmpjes aanwezig, kopieer naar mapje 'movies'
- maak nieuwe map 'smalls' en kopieer alle foto's daarin
- zoek per foto breedte en hoogte
- als breedte > hoogte: verklein breedte max 600px
- als breedte < hoogte: verklein hoogte max 600px - kopieer smalls map naar /media/kingston/datum-onderwerp
- verplaats smalls map naar ~/Afbeeldingen/foto/
- vraag of foto's van camera verwijderd moeten worden
- unmount camera en usbstick !zonder wachtwoord in te geven!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| #!/bin/bash
echo -ne "### Fotoverwerkingsscript ###\n\n"
## Onderwerp van de reeks inlezen ##
echo -ne "Geef het onderwerp van de reeks (zonder spaties): "
read title
## Mapnaam bepalen ##
datum=`date +%Y%m%d`
dirnaam=$datum-$title
## Foto's kopieren ##
aantalfotos=`find /media/usbdisk/ -name *.JPG | wc -l`
if [ $aantalfotos != 0 ]
then
echo -ne "Bezig met kopiëren van $aantalfotos foto's van camera naar harde schijf: "
mkdir /home/roel/Desktop/$dirnaam
for j in `find /media/usbdisk/ -name *.JPG`
do
cp $j /home/roel/Desktop/$dirnaam/
done
echo -ne "Voltooid."
fi
## Video's kopieren ##
aantalvideos=`find /media/usbdisk/ -name *.MOV | wc -l`
if [ $aantalvideos != 0 ]
then
echo -ne "\nBezig met kopiëren van $aantalvideos video(s) van camera naar harde schijf: "
mkdir /home/roel/Desktop/$dirnaam/movies
for j in `find /media/usbdisk/ -name *.MOV`
do
cp $j /home/roel/Desktop/$dirnaam/movies/
done
echo -ne "Voltooid."
fi
## Foto's draaien ##
echo -ne "\nBezig met draaien van foto's:\n"
cd /home/roel/Desktop/$dirnaam/
exifautotran *.JPG
## Vragen om slechte foto's te verwijderen ##
echo -ne "Verwijder de slechte foto's: "
read klaar
## Foto's verkleinen ##
echo -ne "Bezig met maken van kleine versies: "
mkdir /home/roel/Desktop/$dirnaam-smalls
cp -r /home/roel/Desktop/$dirnaam/* /home/roel/Desktop/$dirnaam-smalls/
cd /home/roel/Desktop/$dirnaam-smalls
for j in `find /home/roel/Desktop/$dirnaam-smalls/ -name *.JPG`
do
breedte=`identify -format "%w" $j`
hoogte=`identify -format "%h" $j`
if [ "$breedte" > "$hoogte" ]
then
mogrify -resize 600x -quality 100 -border 10 -bordercolor "#000" $j
else
mogrify -resize x600 -quality 100 -border 10 -bordercolor "#000" $j
fi
done
echo -ne "Voltooid."
## Smalls kopieren naar usbstick ##
echo -ne "\nBezig met kopiëren van kleine versies naar USB-stick: "
cp -r /home/roel/Desktop/$dirnaam-smalls /media/KINGSTON
echo "Voltooid."
## Smalls kopieren naar Mijn Afbeeldingen ##
echo -ne "Bezig met kopiëren van kleine versies naar lokale foto-map: "
mv /home/roel/Desktop/$dirnaam-smalls /home/roel/Mijn\ afbeeldingen/foto
echo "Voltooid."
## Eventueel foto's van camera verwijderen ##
echo -ne "Om de foto's van de camera te verwijderen, typ 'verwijder': "
read VERWIJDER
if [ "$VERWIJDER" = "verwijder" ]
then
rm -rf /media/usbdisk/
fi
echo -ne "Bezig met verwijderen van camera: "
echo "${PASSWD}" | sudo -S umount /media/usbdisk
echo -ne "Voltooid.\n"
echo -ne "Bezig met verwijderen van USB-stick: "
echo "${PASSWD}" | sudo -S umount /media/KINGSTON
echo -ne "Voltooid."
echo -ne "\n\n* Druk op Enter om af te sluiten *"
read |
Maar het werkt dus niet. Hij vindt een fout in het 'find' commando om de foto's te verkleinen, terwijl ik exact dezelfde syntax erboven gebruik om te kopiëren en dat gaat wel goed.
Dit is de output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| ### Fotoverwerkingsscript ### Geef het onderwerp van de reeks (zonder spaties): test Bezig met kopiëren van 2 foto's van camera naar harde schijf: Voltooid. Bezig met draaien van foto's: Executing: jpegtran -copy all -rotate 90 P1000231.JPG Verwijder de slechte foto's: Bezig met maken van kleine versies: find: paths must precede expression Usage: find [-H] [-L] [-P] [path...] [expression] Voltooid. Bezig met kopiëren van kleine versies naar USB-stick: Voltooid. Bezig met kopiëren van kleine versies naar lokale foto-map: Voltooid. Om de foto's van de camera te verwijderen, typ 'verwijder': verwijder rm: cannot remove directory `/media/usbdisk/': Permission denied Bezig met verwijderen van camera: Password: Voltooid. Bezig met verwijderen van USB-stick: Password: Voltooid. * Druk op Enter om af te sluiten * |
Wie ziet de fout(en)?