Vous pouvez utiliser à identify
partir de imagemagick
et vous pouvez utiliser la commande suivante:
find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<300 || $2<300'
l'utilisation de -exec <command> '{}' \;
s'assure que votre nom de fichier peut contenir des espaces, vous pouvez également utiliser
find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | awk '$1<300 || $2<300'
où le -I{}
s'occupe de la même chose.
Ce que j'aime, identify
c'est que vous pouvez spécifier le format de sortie; dans ce cas '%w %h %i'
qui donne la largeur, la hauteur et le chemin complet de l'image. Ensuite, l' awk
expression ne conserve que les lignes pour lesquelles l'image est plus petite que la taille souhaitée.
Exemple de sortie:
64 64 ./thumbsup.jpg
100 150 ./photomin.jpg
Modifier: si vous ne voulez que les noms de fichiers (pour la tuyauterie rm
par exemple), changez simplement $line
la awk
déclaration en $3
, alors cela n'imprimera que la troisième colonne.
| awk '$1<300||$2<300'
ou| awk '$1<300||$2<300{print $3}'
(lorsque seule la 3e colonne est nécessaire).'%w %h %i\n'
) pour que cela fonctionne pour moi.| xargs -I {} mv {} /destination/directory/
Je pense que la réponse acceptée est très bonne, mais je voulais ajouter une autre solution possible ...
Bien que j'utilise le
ImageMagick
plus souvent des outils maintenant,netpbm
c'est un vieil ami pour le traitement des images. Vous pouvez voir la taille de n'importe quel format d'image avec la commande:Cela générera une sortie qui ressemble à:
Pour répondre à la question "qu'est-ce qui suit après la pipe?", J'utilise
while read
plus souvent que j'utilisexargs
car il est plus flexible. Manetpbm
réponse à la question ressemble à ceci:la source
Cela a fonctionné pour moi:
Voici l'exemple de sortie:
./2520161636481000.png 75x75
./2620160819191100.png 75x75
./2420181545550700.png 75x75
la source
La
identify
commande duimagemagick
package fait ce que vous voulez:Encore une fois, vous devrez ensuite utiliser
grep
pour trier la taille de l'image.Cependant, je soupçonne qu'à moins d'avoir une très large gamme de tailles d'image, il serait plus facile d'utiliser simplement
find
pour supprimer des fichiers JPEG en dessous d'une taille donnée:(
-delete
Cela vaut la peine de courir sans d' abord vérifier qu'il ne trouve pas les choses que vous souhaitez conserver - il ne vous demandera pas avant la suppression sinon).la source