Finden Sie Bilder einer bestimmten Größe und verschieben Sie sie vom Terminal in den Papierkorb

Ich sortiere Bilder in einer ziemlich großen Bildbibliothek, und Thumbnails aus der alten iPhoto-Bibliothek sind immer noch darin. Und ich muss sie entfernen, um die Sortiergeschwindigkeit der Bilder zu verbessern.

Ich habe diese Antwort hier für Linux gefunden, aber wie wäre es mit macOS? Gibt es eine Möglichkeit, einen Ordner rekursiv zu durchsuchen und festzustellen, ob das Bild *.jpg, *.png, *.bmp, *.jpegW360 und H270 enthält?

Ausführen von Sierra 10.12.4

Sie könnten imagemagickeinen Algorithmus installieren oder erstellen, indem Sie mdls. Etwas wie mdls -raw -name kMDItemPixelWidth filewürde Ihnen die Breite der Bilddatei geben.

Antworten (1)

Hier ist ein Beispielskript bash , das das Ziel nativ erreichen kann, ohne dass etwas installiert werden muss.

#!/bin/bash

targetDir="$HOME/Pictures"

find "$targetDir" -iname '*.jpg' -o -iname '*.png' -o -iname '*.bmp' -o -iname '*.jpeg' 2>/dev/null | \
while read -r filename; do
    hw="$(sips -g pixelHeight -g pixelWidth "$filename" 2>/dev/null)"
    h="$(awk '/pixelHeight/{print $2}'<<<"$hw")"
    w="$(awk '/pixelWidth/{print $2}'<<<"$hw")"
    if [[ $h -eq 270 ]] && [[ $w -eq 360 ]]; then
        echo rm "$filename"
    fi
done

Alles, was Sie tun müssen, ist, die targetDir Variable auf den Startpunkt zu setzen, an dem der find Befehl suchen soll. Der Standard ist der Ordner „Bilder“ in Ihrem Home-Ordner.

Hinweis: Im Beispielskript muss der echo Befehl vor entfernt werden,
rm "$filename"damit die Dateien tatsächlich gelöscht werden und ist da, damit Sie die Ausgabe des Skripts zunächst testen können , welche Dateien gelöscht werden. Sie können es natürlich ohne Testen entfernen und es einfach tun, wenn Sie sicher sind, dass Sie jede .jpg-, .png-, .bmp- oder .jpeg-Datei mit Abmessungen von 270 Pixel Höhe mal 360 Pixel Breite darin löschen möchten die targetDir.

Beachten Sie auch, dass die Ausführung dieses Skripts abhängig von der Gesamtzahl der Dateien der Zieldateierweiterungen einige Zeit in Anspruch nehmen kann. Auf meinem System wurden ~1000 Dateien gefunden, die von 27500 Dateien in meinem Bilderordner gelöscht werden mussten, und es dauerte mindestens 5 bis 10 Minuten, bis der Vorgang abgeschlossen war.

Das heißt, ich habe dieses Skript so ausgeführt, wie es geschrieben ist, und die einzigen Dateien außer der Testdatei, die ich mit den Zielabmessungen erstellt habe, alle anderen Dateien, die sich an einem bestimmten Ort in meinem iPhoto-Bibliotheksbündel im Ordner „Miniaturansichten“ befinden. Wäre es nicht einfacher, in das Bundle zu gehen und den Inhalt im Finder zu löschen? Das heißt, wenn es wirklich nur diese Thumbnails sind, die Sie loswerden möchten!


Wenn Sie nicht wissen, wie das Skript verwendet wird , gehen Sie im Terminal wie folgt vor:

touch delete270x360images
open delete270x360images

Kopieren Sie den Skriptcode von oben und fügen Sie ihn in das geöffnete delete270x360imagesDokument ein, ändern Sie ihn nach Bedarf/Wunsch und speichern und schließen Sie ihn dann.

Machen Sie es im Terminal ausführbar:

chmod u+x delete270x360images

Um es jetzt im Terminal zu verwenden, geben Sie Folgendes ein und drücken Sie dann die Eingabetaste.

./delete270x360images

Warten Sie, bis es abgeschlossen ist.