2016-07-21 7 views
0

Ich versuche, die Variable $ y in diesem Snippet unten zu verwenden, aber in den Dateinamen am Laufen halten wie $ y.pdfeine Variable in Einzel verwenden Versuch Zitate Bash

ls -v *.jpg | tr '\n' ' ' | sed 's/$/\ $y.pdf/' | xargs convert 

ich auch zeigen sich haben versuchte das unten:

ls -v *.jpg | tr '\n' ' ' | sed 's/$/\'"$y.pdf"'/' | xargs convert 

ls -v *.jpg | tr '\n' ' ' | sed 's/$/\ {$y}.pdf/' | xargs convert 

Das obere schlägt gewöhnlich fehl, da sed etwas anderes erwartet. Die untere gibt nur meinen Dateinamen {$ y} .pdf an.

Irgendwelche Ideen für mich?

Danke!

Antwort

1

Vergiss das Quote Problem; Das ist völlig falsch. Verwenden Sie einfach eine for-Schleife, um alle möglichen Probleme zu vermeiden.

for f in *.jpg; do 
    convert "$f" "${f%.jpg}.pdf" 
done 

${f%.jpg} erweitert auf den Namen der aktuellen Datei minus der .jpg Erweiterung.

Um die Dateien verschmelzen zu einem PDF noch einfacher ist (glaube ich):

convert *.jpg "$y.pdf" 

Unter der Annahme, ls -v in der richtigen Reihenfolge die Dateinamen gibt, und es gibt keine der üblichen Bedenken mit Parsen ls beteiligt sind, verwenden

ls -v *.jpg > input.txt 
convert @input.txt "$y.pdf" 

(Es könnte ein Weg sein, um die Verwendung eines temporären Dateien zu vermeiden, vielleicht so einfach wie ls -v *.jpg | convert @- "$y.pdf", aber ich bin t oo faul, alle Wege zu finden convert kann aufgerufen werden.)

+0

Ich bin ziemlich sicher, dass ich das nicht will, nur weil ich mehrere JPG-Dateien in ein PDF zu kombinieren, nicht jedes JPG in ein PDF . – user2416047

+0

Um auf chepners Editieren zu aktualisieren, ist es leider nicht so einfach. Vielleicht könnte es aber einen besseren Weg geben. Zusammenfassend kombiniere ich mehrere JPGs in einem einzigen PDF. Das Problem hier ist, ich habe etwa 10.000 Dateien. Jedes benannte Datum - Seite 1, Datum - Seite 2, usw. Das Problem ist, dass es aus irgendeinem Grund nicht richtig zusammengeführt wird, da es Seite 1, Seite 10, Seite 2, Seite 20, usw. geht. m mit ls -v. Ich suchte und fand [das] (http://stackoverflow.com/questions/8955425/how-can-i-convert-a-series-of-images-to-a-pdf- from-the-command-line -on-linux # comment32682437_8955465). – user2416047

+0

Und bei seinem dritten Schnitt ... das hat wirklich funktioniert. Ich denke, was ich vorher getan habe, war input.txt file.pdf zu konvertieren, die versucht, input.txt in ein pdf zu konvertieren. Ich denke, ich habe das @ vermisst. Vielen Dank! – user2416047