Erweiterung mit find weglassen?

11

Ich muss Miniaturansichten aus mehreren PNG-Dateien erstellen und möchte dies mit dem convertDienstprogramm ImageMagicks tun . Um rekursiv alle Dateien zu finden, die selbst keine Miniaturansichten sind, verwende ich den folgenden Aufruf (in zwei Zeilen unterteilt, um sie lesbar zu machen):

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;`

Aber dies würde natürlich eine Datei mit dem Namen erstellen, a.png.thumb.pngwenn sie in einer aufgerufenen Datei ausgeführt wird a.png. Wie kann ich die .pngErweiterung aus dem zweiten {}Parameter entfernen, der zum Konvertieren übergeben wurde?

Marcus Riemer
quelle

Antworten:

14

Der einfachste Weg, dies zu tun, besteht darin, das {}an eine Shell wie diese weiterzugeben shund es von der Shell ausführen zu lassen:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
jw013
quelle