2017-01-16 6 views
-1
for f in find *.png; do convert "$f" "$f".pdf; done 

Das ist, was ich die PNG-Dateien im Verzeichnis finden und sie in PDF konvertieren muss, aber ich bekomme Fehler. Was ist ein besserer Weg, dies in Bash zu tun?Wie konvertiert man alle PNG-Dateien in Bash zu PDF?

convert: unable to open image `find': No such file or directory @ error/blob.c/OpenBlob/2705. 
convert: no decode delegate for this image format `' @ error/constitute.c/ReadImage/504. 
convert: no images defined `find.pdf' @ error/convert.c/ConvertImageCommand/3257. 
+1

Wie Bash magisch wissen, den Fund "auszuführen"? Wie kann bash nicht "\ *. Png" 'hier' erweitern, sondern das '*' finden? – John3136

Antwort

4

Die Liste der Dateinamen Sie die for Schleife find wahrsten Sinne des Wortes enthält geben werden. Ich denke, was Sie gemeint ist die Ausgang von find, die Suche nach allen PNG-Bilder in oder unter dem aktuellen Verzeichnis zu tun geben, die

for f in $(find . -iname '*.png'); do convert "$f" "$f".pdf; done 

Es handelt sich hierbei nicht Räume gut behandeln. Eine bessere Lösung ist es, nur die Umwandlung laufen aus find selbst

find "$PWD" -iname '*.png' -execdir convert '{}' '{}'.pdf \; 

Obwohl beachten Sie, dass Sie mit Dateinamen aufzuwickeln wird mit der Endung .png.pdf

1

Wenn Sie es vorziehen, eine Datei mit .pdf statt .png.pdf Sie haben kann verwenden:

find . -name '*.png' -exec sh -c 'convert $1 ${1%.png}.pdf' sh {} \; 
Verwandte Themen