J'ai essayé de trouver des fichiers image png à une certaine hauteur (plus de 500 px). Je sais que file
cela renverra les dimensions de l'image. Exemple:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Mais je dois l'utiliser pour trouver tous les fichiers dans un répertoire d'une hauteur supérieure à 500 px. Je sais comment imprimer tous les fichiers quelle que soit leur hauteur:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Mais comment limiter les 7 $ à ces résultats supérieurs à 500?
la source
Je pense que quelque chose d'autre que les utilitaires shell serait plus approprié, par exemple Perl:
Moins de bavardage en essayant d'analyser 7 $; obtenez directement les dimensions. Oui, vous aurez besoin du module Image :: Info, mais, sur CentOS / RHEL, c'est un package standard, vous pouvez donc simplement exécuter
yum install perl-Image-Info
.la source
apt-get install libimage-info-perl
Vous pouvez également utiliser
identify
depuis ImageMagick:Ou sous OS X:
la source
la source
96, ./4/45445106_w185.png: 86, ./4/404358x_w185.png: 86, ./4/404341x_w185.png: 80, ./4/475986_w185.png: 621, ./4/481693_w185.png: 667, ./4/42513x_w185.png: 86, ./4/404372x_w185.png:
Cette solution fonctionnera également. La dernière partie du code (
mv "$img" ./lowpixel
) déplacera les fichiers sous une largeur et une hauteur spécifiées vers un dossier. Dans l'exemple suivant, toutes les images jpg inférieures à 300x300 seront déplacées vers un dossier nommélowpixel
:find -iname \*.jpg | while read img; do anytopnm "$img" | pamfile | perl -ane 'exit 1 if $F[3]<300 || $F[5]<300' || mv "$img" ./lowpixel; done
la source