Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je
peux lancer un autre shell.
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je
peux lancer un autre shell.
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Le 30/01/2012 18:28, Stephane Chazelas m'a répondu :
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. [...]
Merci de ta réponse, et de cette occasion que tu m'offres de découvrir zsh. Je n'ai pas encore bien compris comment fonctionne autoload (j'ai juste vu qu'avant ça, zmv n'est pas connu, et qu'après c'est une 'shell function'), ni la syntaxe des options de zmv.
J'ai quand même trouvé la doc de zmv dans 'man zshcontrib', et je l'ai lancé avec l'option -n. Bien m'en a pris, car j'ai vu que les nombres à 4 chiffres seraient tronqués à trois (photo3535.png -> photo535.png).
Quoi qu'il en soit, je vais continuer à chercher par moi-même, mais si je pouvais avoir une explication des deux commandes ci-dessus ça me ferait plaisir !
Cordialement, -- Olivier Miakinen
Bonjour,
Le 30/01/2012 18:28, Stephane Chazelas m'a répondu :
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. [...]
Merci de ta réponse, et de cette occasion que tu m'offres
de découvrir zsh. Je n'ai pas encore bien compris comment
fonctionne autoload (j'ai juste vu qu'avant ça, zmv n'est
pas connu, et qu'après c'est une 'shell function'), ni la
syntaxe des options de zmv.
J'ai quand même trouvé la doc de zmv dans 'man zshcontrib',
et je l'ai lancé avec l'option -n. Bien m'en a pris, car
j'ai vu que les nombres à 4 chiffres seraient tronqués à
trois (photo3535.png -> photo535.png).
Quoi qu'il en soit, je vais continuer à chercher par moi-même,
mais si je pouvais avoir une explication des deux commandes
ci-dessus ça me ferait plaisir !
Le 30/01/2012 18:28, Stephane Chazelas m'a répondu :
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. [...]
Merci de ta réponse, et de cette occasion que tu m'offres de découvrir zsh. Je n'ai pas encore bien compris comment fonctionne autoload (j'ai juste vu qu'avant ça, zmv n'est pas connu, et qu'après c'est une 'shell function'), ni la syntaxe des options de zmv.
J'ai quand même trouvé la doc de zmv dans 'man zshcontrib', et je l'ai lancé avec l'option -n. Bien m'en a pris, car j'ai vu que les nombres à 4 chiffres seraient tronqués à trois (photo3535.png -> photo535.png).
Quoi qu'il en soit, je vais continuer à chercher par moi-même, mais si je pouvais avoir une explication des deux commandes ci-dessus ça me ferait plaisir !
Cordialement, -- Olivier Miakinen
Lucas Levrel
Le 30 janvier 2012, Olivier Miakinen a écrit :
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Bonjour,
Indépendamment du shell, tu peux utiliser mmv : mmv 'photo[0-9].*' 'photo00#1.#2' mmv 'photo[0-9][0-9].*' 'photo0#1.#2'
-- LL
Le 30 janvier 2012, Olivier Miakinen a écrit :
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je
peux lancer un autre shell.
Bonjour,
Indépendamment du shell, tu peux utiliser mmv :
mmv 'photo[0-9].*' 'photo00#1.#2'
mmv 'photo[0-9][0-9].*' 'photo0#1.#2'
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Bonjour,
Indépendamment du shell, tu peux utiliser mmv : mmv 'photo[0-9].*' 'photo00#1.#2' mmv 'photo[0-9][0-9].*' 'photo0#1.#2'
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
Stephane Le Men
On 01/30/2012 04:07 PM, Olivier Miakinen wrote:
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
for i in {1..99} do printf "mv photo%d.png photo%.3d.pngn" $i $i done | sh
Mon nez me dit qu'il existe plus court, plus sûr, mais ... il est enrhumé. C'est l’hiver !
On 01/30/2012 04:07 PM, Olivier Miakinen wrote:
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
for i in {1..99}
do
printf "mv photo%d.png photo%.3d.pngn" $i $i
done | sh
Mon nez me dit qu'il existe plus court, plus sûr, mais ... il est
enrhumé. C'est l’hiver !
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
for i in {1..99} do printf "mv photo%d.png photo%.3d.pngn" $i $i done | sh
Mon nez me dit qu'il existe plus court, plus sûr, mais ... il est enrhumé. C'est l’hiver !
Olivier Miakinen
Le 30/01/2012 16:07, je demandais :
Quelqu'un saurait me dire comment faire ?
À tous ceux qui m'ont répondu : je suis désolé de ne pas tester pour le moment, mais je ne vous oublie pas ! Je reviendrai plus tard répondre à chacun.
Cordialement, -- Olivier Miakinen
Le 30/01/2012 16:07, je demandais :
Quelqu'un saurait me dire comment faire ?
À tous ceux qui m'ont répondu : je suis désolé de ne pas tester
pour le moment, mais je ne vous oublie pas ! Je reviendrai plus
tard répondre à chacun.
À tous ceux qui m'ont répondu : je suis désolé de ne pas tester pour le moment, mais je ne vous oublie pas ! Je reviendrai plus tard répondre à chacun.
Cordialement, -- Olivier Miakinen
Alain Montfranc
Olivier Miakinen avait soumis l'idée :
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
Olivier Miakinen avait soumis l'idée :
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je
peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*)
.*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut
eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
Alain Montfranc
Après mûre réflexion, Alain Montfranc a écrit :
Olivier Miakinen avait soumis l'idée :
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
En relisant ce message je vous que certains lecteurs de news interpretent des caracteres pour mise en italique, etc...
idealement regarder le souce du message pour avoir la bonne syntaxe
Après mûre réflexion, Alain Montfranc a écrit :
Olivier Miakinen avait soumis l'idée :
Bonjour,
Soit un répertoire comportant des fichiers nommés par exemple
photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur
à 100 afin que ce numéro soit représenté sur trois chiffres :
photo007.png et photo013.png. Je sais le faire en générant un
script (grâce à vim) contenant tous les « mv » qui vont bien,
mais je suis sûr que ça doit pouvoir se faire en une ligne de
shell (ou peut-être deux, une pour les nombres à un chiffre
et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je
peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*)
.*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en
faisant un grep -v '^... ' apres le 1er sed par exemple
En relisant ce message je vous que certains lecteurs de news
interpretent des caracteres pour mise en italique, etc...
idealement regarder le souce du message pour avoir la bonne syntaxe
Soit un répertoire comportant des fichiers nommés par exemple photo7.png, photo13.png, photo239.png ou photo3535.png.
Je voudrais renommer les fichiers dont le numéro est inférieur à 100 afin que ce numéro soit représenté sur trois chiffres : photo007.png et photo013.png. Je sais le faire en générant un script (grâce à vim) contenant tous les « mv » qui vont bien, mais je suis sûr que ça doit pouvoir se faire en une ligne de shell (ou peut-être deux, une pour les nombres à un chiffre et une pour les nombres à deux chiffres).
Quelqu'un saurait me dire comment faire ?
Note : par défaut j'utilise bash, mais si c'est plus simple je peux lancer un autre shell.
Cordialement,
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
En relisant ce message je vous que certains lecteurs de news interpretent des caracteres pour mise en italique, etc...
idealement regarder le souce du message pour avoir la bonne syntaxe
shagounet
Le jeudi 2 février 2012 20:23:46 UTC, Alain Montfranc a écrit :
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
le shell et ls suffisent a isoler les fichiers contenants 1 ou 2 digits con sécutifs; de meme que quitte a sortir sed, autant l'utiliser et une seule fois: sed -n 'h;s/[0-9][0-9]/0 /;t out;s/[0-9]/00 /;: out;H;g;s/(.*)n/mv 1 /p'
un /[0-9]{3,}/d étant en option si on ne veut pas matcher avec le shell :)
Le jeudi 2 février 2012 20:23:46 UTC, Alain Montfranc a écrit :
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*)
.*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut
eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
le shell et ls suffisent a isoler les fichiers contenants 1 ou 2 digits con sécutifs;
de meme que quitte a sortir sed, autant l'utiliser et une seule fois:
sed -n 'h;s/[0-9][0-9]/0 /;t out;s/[0-9]/00 /;: out;H;g;s/(.*)n/mv 1 /p'
un /[0-9]{3,}/d étant en option si on ne veut pas matcher avec le shell :)
Le jeudi 2 février 2012 20:23:46 UTC, Alain Montfranc a écrit :
ls photo*.png | sed 's/photo(.*).png/1 001/' | sed 's/(.*) .*(...)$/mv photo1.png photo2.png/' | sh
Ca fera juste une erreur sur les fichiers à 3 chiffres qu'on peut eviter en faisant un grep -v '^... ' apres le 1er sed par exemple
le shell et ls suffisent a isoler les fichiers contenants 1 ou 2 digits con sécutifs; de meme que quitte a sortir sed, autant l'utiliser et une seule fois: sed -n 'h;s/[0-9][0-9]/0 /;t out;s/[0-9]/00 /;: out;H;g;s/(.*)n/mv 1 /p'
un /[0-9]{3,}/d étant en option si on ne veut pas matcher avec le shell :)