Also - das erste ist, dass die Shell (Bash oder welche auch immer) bei der Variablenzuweisung vor und nach dem "=" keine Leerzeichen duldet.
Die musst Du auf jeden Fall schon mal wegmachen:
| pdf_pfad=/var/www/pdf_pfad
txt_pfad=/var/www/txt_pfad
|
Dann hast Du nicht "gequotet" - sobald mal ein Leerzeichen im Dateipfad vorkommt geht es schief. Also immer sauber "quoten":
find "$pfad" -type f -name "*pdf" -exec pdftotext -q "$i" - >> "$txt_pfad" {} \;(immer wenn Leerzeichen in den Variablen vorkommen können !)
Allerdings klappt das so natürlich noch nicht. Woher soll das arme Skript auch wissen, was es für "$i" nehmen soll ...?!
Willst Du tatsächlich die Dateien mit einer *.pdf.txt - Endung bekommen ? - dann brauchst Du die 2. Endung nur dranpappen.
Alternativ kannst Du natürlich auch den Dateipfad mit Hilfe von Parameter Expansions zerlegen und neu zusammenbauen.
Bei find ... -exec geht sowas allerdings nur vernünftig in einer Untershell: (weil man diese blöden "{}" nicht weiter bearbeiten kann !)
find "$pdf_pfad" -type f -name "*.pdf" -exec bash -c ' datei=${1##*/}; pdftotext -q "$1" > "$txt_pfad/${datei##*.}.txt" ' -- {} \;Musst Du tatsächlich einen ganzen Verzeichnisbaum abgrasen ? - sonst könntest Du Dir die Untershell nämlich sparen, und einfach eine for ... in - Schleife nehmen. Da kannst Du die Parameter Expansions direkt einsetzen.
LG,
track