in

Recherche d’images PNG plus grandes que x pixels via le shell Linux

Lorsque vous essayez de modifier la conception de votre site Web, vous devez vous soucier de la largeur des images dans le contenu de votre article. J’ai des captures d’écran notoirement grandes sur la plupart des articles que j’ai écrits, donc si je veux augmenter la barre latérale, il est essentiel de déterminer quelles images seront trop larges pour s’intégrer dans le nouveau design.

Puisque je suis programmeur, il serait facile pour moi d’écrire une petite application pour faire ça, mais cela m’a fait réfléchir… pourquoi ne puis-je pas faire ça sur la ligne de commande Linux?

La première chose que j’ai comprise est que les images PNG affichent les données de taille lorsque vous exécutez la commande «fichier» sur elles:

$ fichier image3.png
image3.png: données d’image PNG, 613 x 657, 8 bits / couleur RGBA, non entrelacées

Très utile puisque 99% des images de ce site sont au format PNG. Alors maintenant, jetez-le dans une boucle pour tous les fichiers de mon répertoire de téléchargement:

$ pour f dans * .png; faire le fichier $ f; terminé

image.png: données d’image PNG, 631 x 185, 8 bits / couleur RGBA, non entrelacées
image1.png: données d’image PNG, 631 x 96, 8 bits / couleur RGBA, non entrelacées
image10.png: données d’image PNG, 375 x 395, 8 bits / couleur RGBA, non entrelacé
image11.png: données d’image PNG, 484 x 241, 8 bits / couleur RGBA, non entrelacées
-coupé-

C’est plus utile, mais je devrais extraire les données dans Excel ou une application similaire afin de trier les données, j’ai donc décidé d’utiliser la commande linux «couper» pour extraire uniquement la colonne de largeur.

Vous remarquerez que le paramètre -f5 dit à cut de prendre la cinquième colonne, et le -d avec un espace après lui dit à cut d’utiliser un espace comme délimiteur. La barre oblique est un caractère d’échappement pour indiquer au shell d’utiliser l’espace comme caractère et non comme espace blanc.

$ pour f dans * .png; faire le fichier $ f | couper -f5 -d ; terminé

631
631
375
484
-coupé-

Sortie pas entièrement utile, n’est-ce pas? Passons cela à travers une instruction bash if, puis montrons uniquement la sortie de la commande file lorsque la largeur est supérieure à 600 pixels.

Notez les marques `(backtick) autour du“ fichier $ f | cut… ”, qui indique que les commandes à l’intérieur de` seront traitées comme une sortie unique et introduites dans l’instruction if, où nous utilisons un -gt (supérieur à). Notez également que vous avez besoin d’espaces de chaque côté des supports [ ]

pour f dans * .png; faire si [ `file $f | cut -f5 -d ` -gt 600 ] ; puis fichier $ f; fi; done

image.png: données d’image PNG, 631 x 185, 8 bits / couleur RGBA, non entrelacées
image1.png: données d’image PNG, 631 x 96, 8 bits / couleur RGBA, non entrelacées
image17.png: données d’image PNG, 638 x 340, 8 bits / couleur RGBA, non entrelacées
image18.png: données d’image PNG, 608 x 448, 8 bits / couleur RGBA, non entrelacées
-coupé-

Nous avons maintenant une liste de tous les fichiers de plus de 600 pixels de large. Vous pouvez ajuster le «fichier $ f» à la fin pour simplement renvoyer les noms de fichiers si vous avez besoin de les copier ou de les déplacer ailleurs:

pour f dans * .png; faire si [ `file $f | cut -f5 -d ` -gt 600 ] ; puis echo $ f; fi; done

image.png
image1.png
image17.png
image18.png
-coupé-

Le shell Linux est incroyablement puissant! Cette solution n’est pas vraiment pratique pour tout le monde, mais il est bon de savoir comment travailler avec le shell pour pouvoir accomplir ce type de tâche quand vous en avez besoin.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment installer macOS High Sierra dans VirtualBox sur Windows 10

Comment installer macOS High Sierra dans VirtualBox sur Windows 10

Cinq façons de personnaliser Android que iOS ne peut toujours pas faire correspondre

Cinq façons de personnaliser Android que iOS ne peut toujours pas faire correspondre