BASH kann einfach viel. :-)
Dateien, pdftotext
Alle Dateien im Verzeichnis /webs/pdf, die höchstens 6h alt sind und den Namen ????.pdf haben sequentiell durchgehen, PDF nach Text konvertieren, daraus die erste Zeile nehmen, “Testergebnisse für ” löschen, Leerzeichen durch “_” ersetzen und das PDF-File dann auf $username kopieren:
pdflist=$(find /webs/pdf -type f -mmin -360 -name "????.pdf")
for f in $pdflist
do
f2=$(basename $f .pdf)
echo $f $f2
username=$(/usr/bin/pdftotext $f2.pdf - | head -n 1)
username="${username/Testergebnisse für /}"
username="${username/ /_}"
echo $username
cp $f $f2$username.pdf
done
find, convert
Voraussetzung: im aktuellen Verzeichnis liegen 0-n JPGs der Form Name 1.jpg bis Name 3.jpg - es müssen genau drei Files pro Name sein, Leerzeichen dürfen (außer vor der Ziffer) nicht vorkommen. Das Skript sucht dann jeweils die drei zusammengehörigen JPGs und konvertiert sie in ein PDF mit dem Dateinamen Name.pdf.
wholecnt=$(find . -maxdepth 1 -type f -name "*.jpg" | wc -l)
if (($wholecnt > 0)); then
whowashere=$(ls -1 *.jpg | cut -d " " -f 1 | sort -u)
# echo $whowashere
for teilnehmer in $whowashere
do
cnt=$(find . -maxdepth 1 -type f -name "$teilnehmer*.jpg" | wc -l)
# echo $cnt
if (($cnt == 3)); then
echo "Konvertiere $teilnehmer"
convert -compress jpeg $teilnehmer*.jpg "$teilnehmer"_Datenblatt.pdf
if [ $? -eq 0 ]; then
rm $teilnehmer*.jpg
chown root.root "$teilnehmer"_Datenblatt.pdf
else
echo "Fehler beim Konvertieren von $teilnehmer!"
fi
else
echo "Fuer $teilnehmer sind nur $cnt Datei(en) vorhanden!"
fi
done
fi
Siehe auch: