Re: [LA-discussions] Bash : script récurent

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


Le lundi 9 mai 2011, Stéphan a écrit :
> En ce qui concerne les guillemets, il suffit juste de les mettre
> autour du $i :
> convert "$i" -resize 90x90 -strip -quality 75 cover.bmp;

Je dois en avoir oublié qq part car ça ne marche pas...

Bon si j'explique ce que je cherche à faire et que je joins mons script ce 
sera surement plus efficace.

J'ai rippé ma discothèque sur mon disque dur en ogg, avec k3b, et tout ça est 
classé en sous-sous-répertoires (initiale/artiste/album/pistes.ogg) et j'y ai 
mis -ou plutôt je suis en train de mettre également les pochettes, soit 
trouvées sur le web (et je les nomme cover.jpg), soit scannées, et dans ce cas 
que je les nomme FullFront.jpg car je scanne l'intégrale du livret déplié.

Ensuite et c'est là qu'initervient le script il faut retailler les  FullFront 
pour ne garder que la page 1 (et comme toutes les images ne font pas la mm 
taille, des fois c'est plié en 3 je calcule d'abord les dimensions) et appeler 
ça cover.jpg puis redimensionner et passer en bmp tous les cover pour pouvoir 
les mettre sur le baladeur numérique que je vais passser sous RockBox dès que 
je serai prêt.

> Je n'ai pas suivi tout le fil de la discussion, mais pour nommer le
> fichier destination, sed peut le faire :

étant donné que les besoins sont faibles les solutions déjà données suffisent, 
en fait le %% fonctionne bien ça devait être une erreur ailleurs. Mais je 
garde le bout de code pour une autre occasion

> Juste une remarque sur le script : le nombre de résultats retournés par
> la commande find ne doit pas être trop important. Si le nombre de
> fichiers retournés est grand, alors il faut utiliser l'option exec de
> find, ou alors piper le résultat de find sur une commande xargs.
> Ensuite, comme je ne sais pas faire passer une commande complexe en
> argument de xargs, je passe par un script shell intermédiaire (où $i
> devient $*).

Je me demande si ce n'est pas ce que je fais sans bien le comprendre, j'ai 
recopié des trucs trouvés ici et là et ça le fait...

Bon maintenant mon code, sans trop de "" car sinon plus rien ne marche. Pour 
l'instant il marche sur un petit rép de test où j'ai remplacé manuellement les 
espaces par des _ mais j'aimerais bien qu'il soit universel.

Merci à tous pour votre aide

#!/bin/bash

for i in "$(find ./ -type f -name FullFront.jpg)"
do
  for j in $i
  do
    if ! test -f $(dirname $j)/cover.jpg; then
      h=$(identify -format "%h" $j);
      l=$(identify -format "%w" $j);
      let r=$h*100/$l;
      convert $j -gravity East -crop $r"x100%" $(dirname $j)/cover.jpg;
    fi
  done
done

for i in "$(find ./ -type f -name cover.jpg)"
do
  for j in $i
  do
  convert $j -resize 90x90 -strip -quality 75 ${j%%.jpg}.bmp;
  done
done


-- 
Cordialement, Daniel Cartron
« L'argent des sots est le patrimoine des gens d'esprit. »
Diderot

---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/