für alle Dateien in einem Ordner... mache...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

für alle Dateien in einem Ordner... mache...

Beitrag von badera » 21.03.2008 11:56:37

Ich möchte ein Skript schreiben, das alle TIF Dateien in einem Ordner in PDF wandelt...

Code: Alles auswählen

cmd=`find *.tif`

for i in $cmd
    do
        tiff2pdf -z -p A4 -o "$i.pdf" "$i"
    done
Leider funktioniert das nicht mit Dateien, bei welchen ein Space im Dateinamen ist... Wie kann man das lösen?
(Ich suche kein anderes programm, das das ev. intern könnte... ich möchte das Skript behalten, weil noch anderes in die Schlaufe muss)
Besten Dank für Eure Hilfe!
- Adrian

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 21.03.2008 14:40:36

hi,

man könnte für die Schleife ein Trennzeichen verwenden,
das in Filenamen nicht vorkommen kann. Da kommt nur '/'
in Frage, sogar Backspace ist erlaubt! Normalerweise
enthält $IFS die 3 Trennzeichen Space, Tab und Newline.
Deshalb wird es innerhalb der Schleife zurückgesetzt.

Code: Alles auswählen

#!/bin/sh

cmd=`find *.tif -printf '%p/'`
STD_IFS=$IFS
IFS='/'

for i in $cmd
   do
      IFS=$STD_IFS
      tiff2pdf -z -p A4 -o "$i.pdf" "$i"
   done
Beware of programmers who carry screwdrivers.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 21.03.2008 15:13:33

So geht's, nur leider heissen die Ausgabedateien dann *.tiff.pdf:
find . -name '*tiff' -exec tiff2pdf -z -p A4 -o{}.pdf {} \;

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Beitrag von badera » 21.03.2008 15:20:42

Besten Dank für Eure Hilfe!

Antworten