Skip to content

Instantly share code, notes, and snippets.

@tschloss
Created November 26, 2021 17:30
Show Gist options
  • Save tschloss/db3e7a4f9c426c45bab77abca4a52612 to your computer and use it in GitHub Desktop.
Save tschloss/db3e7a4f9c426c45bab77abca4a52612 to your computer and use it in GitHub Desktop.
Rename a batch of PDFs by keywords found in the text (very specific)
#!/bin/bash
### MacOS (sollte auch auf Linux laufen)
### Es wird ein Tool benötigt. welches PDF on Text umwandelt, hier "pdftotext"
### ... man muss sich den Output anschauen und sehen, wie man den namensgebenden Text findet
### ... hier sind es drei Stellen, die ich suche und in ein CSV schreibe sowie die Datei umbenenne
### ... Sondernehandlung für PDFs, die die Schlüsselwörter nicht enthalten => dann Werte des vorigen PDFs übernehmen
#rm log
schluessel="FEHLER"
schluessel1=""
### außer "rename" CSV-Datei erzeugen
echo "nr;doc;email;mitgnr;anrede" > steuer.csv
### Schleife über ale PDF im aktuellen Verzeichnis
for datei in *.pdf ; do
### PDF temporär in Text wandeln
pdftotext -layout -enc UTF-8 $datei - >temp.txt
### Schlüsselwort suchen
schluessel1=`grep -E "(Mitglieds|Spieler) Nr. " temp.txt | sed "s/^.* Nr. *\([0-9][0-9]*\)$/\1/"`
#schluessel1=`grep -E "Mitgliedsnummer:" temp.txt | sed "s/^Mitgliedsnummer: *\([0-9][0-9]*\)$/\1/"`
if [ -n "$schluessel1" ]; then
schluessel=$schluessel1
fi
# else-Zweig: pdf mit vorigem cat !!!
#echo $schluessel
email=`grep "Versand an:" temp.txt | sed "s/^ *Versand an: *\(.*\)$/\1/"`
if [ -z "$email" ]; then
email="**NO-EMAIL**"
fi
#echo $email
anrede=`grep "Sehr geehrte" temp.txt`
if [ -z "$anrede" ]; then
anrede="Sehr geehrtes Mitglied,"
fi
### umbenennen!
name=${schluessel}_${datei}
#mv $datei $schluessel.pdf
mv $datei $name
echo $datei';'$name';'$email';'$schluessel1';'$anrede >>steuer.csv
schluessel1=""
### aus Kontrollgründen alle Textversionen in eine große Textdatei schreiben
cat temp.txt >> allpdfinonetext.txt
done
### Ende Schleife über alle PDFs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment