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, *.jpeg
W360 und H270 enthält?
Ausführen von Sierra 10.12.4
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 delete270x360images
Dokument 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.
fd0
imagemagick
einen Algorithmus installieren oder erstellen, indem Siemdls
. Etwas wiemdls -raw -name kMDItemPixelWidth file
würde Ihnen die Breite der Bilddatei geben.