Hier ist eine Möglichkeit, die die besten der oben genannten Vorschläge in einer einfachen, effizienten und robusten Befehlszeile kombiniert:
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +
Es funktioniert gut mit Dateinamen, die mit einem -
oder Leerzeichen beginnen. Beachten Sie die Verwendung von -iname
denen die Groß- und Kleinschreibung - Version , -name
so dass es arbeiten wird .JPG
genauso gut wie .jpg
.
Dies wird verwendet find
, um die Dateiliste abzurufen, anstatt ein Shell-Globbing mit dem *.jpg
Platzhalter durchzuführen, was auf einigen Systemen zu einem Fehler führen kann, dass die Argumentliste zu lang ist. Obwohl @enzotib in einem Kommentar verweist, unterscheidet sich das Verhalten der Verwendung von Globbing in einer for-Schleife von dem für die Argumente eines Befehls .
Auch find
Unterverzeichnisse handhaben , während Shell Globbing nicht , wenn Sie Shell-spezifische Funktionen wie die haben passieren **/*jpg
rekursive Globbing Syntax in zsh.
BEARBEITEN: Ich dachte, ich würde eine weitere nützliche Funktion hinzufügen, an find
die ich dachte, nachdem ich einen Kommentar von @IlmariKaronen gelesen hatte, in dem es darum ging, den Befehl erneut auszuführen und nur Dateien zu konvertieren, die sich seit der ersten Ausführung geändert haben.
Beim ersten Durchlauf können Sie touch
eine Zeitstempeldatei erstellen, nachdem die Konvertierung abgeschlossen ist.
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +; touch timestamp
Fügen Sie -newer timestamp
dann den find
Ausdruck hinzu, um die Teilmenge der Dateien zu bearbeiten, deren letzte Änderungszeit neuer ist als die Zeitstempeldatei. Aktualisieren Sie die Zeitstempeldatei nach jedem Lauf.
find /path/to/files -iname '*.jpg' -newer timestamp -exec mogrify -format pdf {} +; touch timestamp
Dies ist ein einfacher Weg, um zu vermeiden, dass Sie auf ein Makefile zurückgreifen müssen (es sei denn, Sie verwenden bereits eines), und ein weiterer guter Grund, warum es sich lohnt, es zu verwenden, find
wann immer es möglich ist.