Question Terminal Mac: boucle dans les sous-répertoires et optimise toutes les images


J'ai un dossier contenant de nombreux sous-dossiers pleins d’images. Voir l'image ci-jointe par exemple.

alt

Fondamentalement, je veux les parcourir en boucle et réduire la taille des images pour qu’elles ne dépassent pas 1024 pixels. Ils sont tous des JPEG.

Je suis au courant des commandes SIPS, c'est-à-dire

sips -Z 1024 *.png

Cependant, cela ne fonctionne que si toutes les images sont dans le répertoire en cours.

Comment puis-je le configurer pour parcourir tous les sous-répertoires?


2
2017-07-21 23:37


origine




Réponses:


Vous pouvez l'exécuter avec find: find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;

Find recherche les fichiers (-type f), avec l'extension png (-name '* .png') dans le répertoire 'images / path' et exécute la commande en paramètre, en remplaçant «{}» par le nom du fichier, vous devez terminer la commande avec "\;".


6
2017-07-21 23:53



Merci. J'ai eu un problème avec ce qui ne redimensionne pas tout mais a fait la même chose avec imagemagick: find /images/path -type f -iname "*.jpg" -execdir convert {} -resize 1024x1024\> -quality 70 {} \; - Quadrant6
Merci, j'essaye encore la commande sips, elle tourne comme si elle faisait quelque chose mais ne semble pas réellement enregistrer le nouveau fichier ..? find images/path -type f -name "*.jpg" -exec sips -Z 1024 -s format jpeg -s formatOptions 80 {} \; - Quadrant6
@ Quadrant6 vérifiez si le fichier n'est pas enregistré dans le répertoire actuel, testez également la commande sips seule dans le même chemin mais en spécifiant le chemin d'accès complet pour un fichier d'image de test. - denisvm