Le (on) mardi 29 janvier 2008 20:00, Jack.R a écrit (wrote) : >> Il y a au moins un problème avec ce script ; la liste des fichiers >> à traiter doit tenir sur la ligne de commande. > > Je viens de faires des essais avec une trentaine de fichier dont les > noms font environ 70 caractères, ls passe bien à la ligne mais cela > fonctionne.
Je crois que ce n'est pas ce ça qu'il s'agissait. Le problème est que la ligne de commande que peut traiter un shell a une longueur limitée. Donc si il y trop de fichiers, le « for i in `ls -r` » va être transformé en « for i in 1.png 2.png [...] n.png » qui va faire exploser le shell si n est trop grand. Euh, ceci dit, en testant là chez moi (sous zsh), un petit % for i in `seq 1 1000000`; do echo "$i "; done; echo ''; n'a pas l'air de faire exploser quoi que ce soit, alors qu'il produit quand même une *très* longue ligne de commande d'après le raisonnement précédent. > Cela cloche lorsqu'il y a des espaces dans le nom des fichiers à > traiter. > C'est logique. Pour éviter ça, on pourrait, avec zsh, faire : for i in **/*.png mais on perd alors le classement par date. Par ailleurs, il y a un autre problème avec le `ls -t -r *.png`, lié au traitement des *, qui est effectué par le shell, et non par ls : ainsi, le -r ne sert ici à rien, car ls ne verra que la liste des .png du répertoire courant, produite par le shell : il ne fera en fait que le classement par date. Manuel. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]