Hallo liebe Ubuntuuser,
ich beschäftige mich erst seit recht kurzer Zeit mit Linux und der Shell und benötige ein Bash-Script, um in einem angegebenen Verzeichnis inkl. aller Unterverzeichnisse alle vorhandenen PDF-Dateien zu bearbeiten. Mein Anwendungsfall ist, dass ich über Jahre Dateien nur als Bilder gescannt habe und nun mit ocrmypdf einen Textlayer hinzufügen möchte. Meine Dateien liegen auf einem NAS, das ich per mount eingebunden habe.
Ich habe durch Ausprobieren und iterative Anpassung meine Lösung nun so weit hinbekommen, dass ich in dem angegebenen Verzeichnis alle PDF-Dateien verarbeiten kann. Unterverzeichnisse werden nicht berücksichtigt (das erwarte ich beim u.a. Code auch so ☺) und Verzeichnisnamen mit Leerzeichen machen auch Probleme.
Was mir in meiner Lösung also nun fehlt, ist das Einbinden aller Unterverzeichnisse (in beliebiger Tiefe, wobei ich praktisch vermutlich nicht mehr als drei Ebenen habe) und das "Abfangen" bzw. Berücksichtigen von Verzeichnissen, die ein Leerzeichen im Namen haben.
Bei meiner Suche nach einer Lösung habe ich Ansätze mit find und einer "if"-Abfrage zum Dateitypen gesehen, bekomme das aber nicht so hin, dass es bei mir funktioniert.
Ich gehe davon aus, dass mein Anwendungsfall vom Prinzip her (mache etwas mit allen Dateien eines bestimmten Typs in einem Verzeichnis inkl. aller Unterverzeichnisse) relativ gängig ist, komme aber trotzdem nicht weiter.
Daher bin ich für Hinweise zur Lösung sehr dankbar!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash # Test whether command-line argument is present (non-empty) if [ -n "$1" ] # if command-line argument is present, use argument for dir then dir=$1 # else exit else exit 0 fi # for every file in the given dir for file in $dir/*.pdf ; do ocrmypdf -d -s -l deu "$file" "$file" done exit 0 |