BASH script foo

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:

blogroll

social