Ich möchte die Größe einer Liste von Bildern ändern, alle im Verzeichnis. Um das zu erreichen, verwende ich convert
von imagemagick. Ich möchte die Größe ändern
in
%Vor%Ich habe mich gefragt, ob es eine Methode gibt, dies in einer einzigen Befehlszeile zu erreichen. Eine elegante Lösung könnte oft nützlich sein, nicht nur in diesem Fall.
BEARBEITEN:
Ich möchte eine nicht script-ähnliche Lösung, dh. ohne for-Schleife.
Wenn Sie die Größe auf 800x600 ändern möchten:
%Vor%(funktioniert in bash)
GNU Parallel ist noch einfacher als für Schleifen und ist oft schneller:
%Vor%Hier ein paar Dinge, von rechts nach links:
::: *.jpg
bedeutet, dass der Befehl für jede jpg-Datei {.}
bedeutet, dass der aktuelle Dateiname ohne das Suffix (% co_de%) .jpg
bedeutet, dass der aktuelle Dateiname {}
bedeutet, dass Sie den folgenden Befehl mehrmals parallel ausführen. Es wählt das Maximum parallel aus, um die Anzahl der Kerne Ihres Computers zu erreichen. Wenn alle fertig sind, wird der nächste gestartet, bis alle jpg-Dateien konvertiert sind. Dies führt den Befehl parallel
für jede Datei aus. Das convert --resize 800x600 -- foo.jpg foo-resized.jpg
weist convert an, Verarbeitungsflags zu stoppen, falls ein Dateiname mit einem --
beginnt.
P.S. Auf meinem Mac habe ich Homebrew installiert, also konnte ich parallel installieren und mit
konvertieren %Vor%Tags und Links linux bash shell imagemagick