2 votes

Copier le png de chaque répertoire, si le png est >600x600 ?

J'ai une arborescence de répertoires contenant chacun des fichiers png.

A partir de chaque répertoire, je voudrais copier les fichiers png dont la résolution est >(600x600).

En utilisant les commandes suivantes, je pourrais créer un script qui ferait exactement cela, mais il serait assez long.

Cette commande listera les pngs dont le nombre de pixels horizontaux est >600.

for f in *.png;do if [ `file $f | cut -f5 -d\ ` -gt 600 ] ; then echo $f;fi;done

Cette commande va trouver tous les répertoires et y copier file.png

find <basedir>/ -type d -exec cp file.png '{}' \;

Quelqu'un connaît-il un bon moyen de résoudre ce problème ?

Mise à jour : Voilà ce que j'ai obtenu.

for f in $(find . -type f -name *png -print0); do
    identify -format '%w %h' $f|awk '{print $1 $2}'

# if [$1 -gt 600 && $2 -gt 600]; then
    cp $f ~/600x600
    fi

done

Comment puis-je utiliser $1 y $2 de awk en el if - déclaration ?

5voto

Je ne suis pas sûr de comprendre la question, mais je suppose que vous voulez copier un fichier de taille supérieure à 600x600 dans un répertoire spécifique, alors vous pouvez faire quelque chose comme :

for f in *.png;do if [[ `file $f | cut -f5 -d\ ` -gt 600 ]] ; then 
echo $f;fi;done|nawk '{print "cp "$1" my_specific_directory"}' | bash

où mon_répertoire_spécifique est le répertoire où vous voulez copier vos pngs...

4voto

matchew Points 5196
identify -format '%w %h' yourImage.png

UPDATE

Désolé, j'avais presque tout tapé il y a un moment, mais j'ai été interrompu.

J'ai testé ceci, et cela devrait fonctionner

for f in *png; 
do 
  identify -format '%w %h' $f | awk -v f="$f" '{ if ($1 >= 600 && $2 >= 600) print "cp -piv "f" ~/DESTINATION_DIR"}' | bash
done 

remarquez que vous pouvez faire la comparaison dans awk. Si vous avez le désir d'apprendre, essayez d'en faire une phrase unique. Bien sûr, ce sera long, mais vous devriez être capable de faire toute cette opération avec find. Le problème pour moi est le piping dans -exec, mais je sais que c'est possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X