Comme dit plus haut mettre des guillemets autour du $i ne change rien, c'est au niveau du for que c'est découpé au niveau des espaces, et même si je fais joujou pour mettre chaque nom de fichiers entre guillemets, ça me fait pareil (un fichier "chauve et un fichier souris.jpg").
Le find fonctionne, mais ça reste problèmatique si je veux effectuer plus d'une commande, voir des tests, des boucles, avec le nom du fichier.
Exemple pratique : renommer une série de photo par la date contenue dans les infos exif de l'image.
Si il y a des photos prises en rafale, plusieurs photos auront le même nom (prises à la même seconde), donc il faut que je puisse gérer le cas où une photo ayant ce nom existe déjà, alors rajouter et incrémenter un nombre dans le nom.
Je ne peux pas me contenter de faire un
find -name "*.jpg" -exec mv '{}' `récuperer-la-date`.jpg
Il faut que je puisse sortir une liste de fichier, et tous les traiter un par un comme je veux, pas que ce soit find qui exécute mes commandes (ce qui est assez limité).
À la rigueur il y a peut être moyen de faire un ls *.jpg > /tmp/plop
et pour chaque ligne du fichier /tmp/plop, faire mes traitements, mais comment lire ligne après ligne le fichier /tmp/plop ?
En gros faire une boucle :
tant_que pas fin du fichier $i = nouvelle ligne
exécuter ceci
tester cela et faire ça sinon faire ceci
fin_tant_que
Merci
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: retirer_ces_$*%*&@_d'_espaces !!
Posté par Thomas Debesse (site web personnel, Mastodon) . En réponse au message appliquer une action à chaque fichier d'un répertoire. Évalué à 1.
Le find fonctionne, mais ça reste problèmatique si je veux effectuer plus d'une commande, voir des tests, des boucles, avec le nom du fichier.
Exemple pratique : renommer une série de photo par la date contenue dans les infos exif de l'image.
Si il y a des photos prises en rafale, plusieurs photos auront le même nom (prises à la même seconde), donc il faut que je puisse gérer le cas où une photo ayant ce nom existe déjà, alors rajouter et incrémenter un nombre dans le nom.
Je ne peux pas me contenter de faire un
find -name "*.jpg" -exec mv '{}' `récuperer-la-date`.jpg
Il faut que je puisse sortir une liste de fichier, et tous les traiter un par un comme je veux, pas que ce soit find qui exécute mes commandes (ce qui est assez limité).
À la rigueur il y a peut être moyen de faire un ls *.jpg > /tmp/plop
et pour chaque ligne du fichier /tmp/plop, faire mes traitements, mais comment lire ligne après ligne le fichier /tmp/plop ?
En gros faire une boucle :
tant_que pas fin du fichier $i = nouvelle ligne
exécuter ceci
tester cela et faire ça sinon faire ceci
fin_tant_que
Merci
ce commentaire est sous licence cc by 4 et précédentes