GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Auslassen der Erweiterung mit Find?

Ich muss Thumbnails aus mehreren .png-Dateien erstellen und möchte dies mit ImageMagicks convert tun Nützlichkeit. Um rekursiv alle Dateien zu finden, die selbst keine Thumbnails sind, verwende ich den folgenden Aufruf (aufgeteilt in zwei Zeilen, um ihn lesbar zu machen):

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

Aber das würde natürlich eine Datei namens a.png.thumb.png erzeugen wenn es auf einer Datei namens a.png ausgeführt wird . Wie könnte ich die .png entfernen Erweiterung ab dem zweiten {} übergebener Parameter zum Konvertieren?

Akzeptierte Antwort:

Der einfachste Weg, dies zu tun, besteht darin, den {} zu übergeben weg zu einer Shell wie sh und lassen Sie es die Shell tun:

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

Linux
  1. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  2. Dateien finden und taren (mit Leerzeichen)

  3. Wie finde ich alle Dateien mit einem bestimmten übergeordneten Verzeichnis in Linux?

  4. Suchen Sie rekursiv nach Dateien mit einer bestimmten Erweiterung

  5. Dateien mit gesetzten ACLs finden

So finden Sie installierte Anwendungen mit installierter Größe in Linux

Finden Sie Informationen zur Linux-Systemhardware mit Hwinfo

Finden Sie verlorene Dateien mit Scalpel

So entfernen Sie Dateien mit einer bestimmten Erweiterung in Linux

So finden Sie Dateien mit dem fd-Befehl in Linux

Tutorial für Linux-Suchbefehle (mit Beispielen)