View previous topic :: View next topic |
Author |
Message |
DaiKo Apprentice
Joined: 07 Apr 2004 Posts: 161 Location: Mendes (France)
|
Posted: Mon Jan 10, 2005 7:43 am Post subject: [Renomage] Renomer une liste de fichiers |
|
|
Salut
Existe t il une solution élégante pour renomer une liste de fichier numéroté ?
ex :
Liste1 :
Quote: | Livre1.chapitre1_titre_chapitre.page1.jpg
Livre1.chapitre1_titre_chapitre.page2.jpg
Livre1.chapitre2_titre_chapitre.page3.jpg
... |
vers Liste2 :
Quote: | Livre1.chap1.01.Fr.jpg
Livre1.chap1.02.Fr.jpg
Livre1.chap2.03.Fr.jpg
... |
++ |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Mon Jan 10, 2005 8:06 am Post subject: |
|
|
Ca doit être possible mais pas évident. Le résultat à obtenir est très différent de l'origine.
J'y réfléchirai ce soir. |
|
Back to top |
|
|
TTK Guru
Joined: 02 Mar 2004 Posts: 523
|
Posted: Mon Jan 10, 2005 8:39 am Post subject: |
|
|
Salut
Ben avec un truc comme:
Code: |
for i in *.jpg
do
mv $i `echo $i | sed 's/Livre\(.\).chapitre\(.\)_titre_chapitre.page\(.\).jpg/Livre\1.chap\2.\3.Fr.jpg/'`
done
|
Ca marche a peu pres, mais si tu veux vraiment compléter tes chiffres avec des zéros (01.jpg) tu n'echapperas pas au script perl. Pas compliqué d'ailleurs ...[/code] |
|
Back to top |
|
|
linux_girl Apprentice
Joined: 12 Sep 2003 Posts: 287
|
Posted: Mon Jan 10, 2005 8:43 am Post subject: |
|
|
TTK wrote: | Salut
Ben avec un truc comme:
Code: |
for i in *.jpg
do
mv $i `echo $i | sed 's/Livre\(.\).chapitre\(.\)_titre_chapitre.page\(.\).jpg/Livre\1.chap\2.\3.Fr.jpg/'`
done
|
Ca marche a peu pres, mais si tu veux vraiment compléter tes chiffres avec des zéros (01.jpg) tu n'echapperas pas au script perl. Pas compliqué d'ailleurs ...[/code] |
yep ca ser a quoi de \(.\) ? dans la regexp je croyat qu'un \.* fesait l'afiare ? _________________ |
|
Back to top |
|
|
LostControl l33t
Joined: 02 Mar 2004 Posts: 885 Location: La Glane, Suisse
|
|
Back to top |
|
|
Panuru n00b
Joined: 10 Aug 2004 Posts: 36 Location: Paris, France
|
Posted: Mon Jan 10, 2005 9:36 am Post subject: |
|
|
Un logiciel à la Krename (dans Portage) permet de faire ce genre d'opération très facilement. |
|
Back to top |
|
|
Darkael Veteran
Joined: 10 Aug 2004 Posts: 1321 Location: France
|
Posted: Mon Jan 10, 2005 9:36 am Post subject: |
|
|
Daiko, si je comprends bien à la place de titre_chapitre il y a le nom du chapitre (ce n'est pas litérallement titre_chapitre) et à la place de Livre1 il y a le titre du livre?
Dans ce cas, ma version:
Code: |
#!/bin/sh
for f in *.jpg
do
mv $f `echo $f | sed "s/\(.*\)\.chapitre\([0-9]*\)[^\.]*\.page\([0-9]*\).jpg/\1.chap\2.\3.Fr.jpg/" | sed "s/\.\([0-9]\)\.Fr/\.0\1.Fr/"`
done
|
Ca donne ça:
Code: |
gael@ubik ~/rename $ ls -1
Le_Monde.chapitre1_Edito.page1.jpg
Le_Monde.chapitre2_Sport.page13.jpg
Le_Monde.chapitre2_Sport.page1.jpg
Playboy.chapitre1_Jenna.page12.jpg
Playboy.chapitre1_Jenna.page1.jpg
Playboy.chapitre2_Deborah.page2.jpg
gael@ubik ~/rename $ ./rename.sh
gael@ubik ~/rename $ ls -1
Le_Monde.chap1.01.Fr.jpg
Le_Monde.chap2.01.Fr.jpg
Le_Monde.chap2.13.Fr.jpg
Playboy.chap1.01.Fr.jpg
Playboy.chap1.12.Fr.jpg
Playboy.chap2.02.Fr.jpg
|
Bon, loi de Murphy oblige, c'est surement pas le résultat que tu voulais et/ou les fichiers ne sont pas comme ça à la base. Donc, la morale de l'histoire, c'est que tu devrais apprendre la syntaxe de sed, pour pouvoir faire toi-même selon les cas....
@TTK: ta version ne prend pas en compte que titre_chapitre change selon les chapitres, et pour rajouter les 0 il suffit de faire une deuxième passe de sed (oui c'est moche, mais bon )
@linux_girl(?): les parenthèses, ça sert à retenir un morceau de la chaine, pour la réutiliser dans la substitution, avec \1, \2 ...
@LostControl: je connais pas les subtilités de rename, mais je pense qu'à un certain niveau de complexité ça sera tout aussi compliqué qu'avec sed...
Voila.
(je devrais être en cours, à la place je glande chez moi et j'écris des scripts laids pour les autres ... C'est beau la vie d'étudiant ) |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Jan 10, 2005 9:41 am Post subject: |
|
|
Quote: |
Code: |
Playboy.chapitre1_Jenna.page12.jpg
Playboy.chapitre1_Jenna.page1.jpg
Playboy.chapitre2_Deborah.page2.jpg
|
|
lol |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Mon Jan 10, 2005 11:40 am Post subject: |
|
|
KarnEvil wrote: |
Voila.
(je devrais être en cours, à la place je glande chez moi et j'écris des scripts laids pour les autres ... C'est beau la vie d'étudiant ) |
Ce matin je me suis dépéché de partir pour aller en cours.
Finallement j'ai raté les 2heures de 7 à 10 et je me suis retrouvé en anglais ! En plus cet aprèm je n'ai pas cours, ce n'est pas mon groupe.
Bref la semaine commence plutôt mal. Normal, elle débute par un lundi...
@linux_girl :
linux_girl wrote: |
yep ca ser a quoi de \(.\) ? dans la regexp je croyat qu'un \.* fesait l'afiare ?
|
\(.\) permet d'identifier une sous expression que tu repositionne avec \1 \2 etc.
Tu peux aussi faire quelque chose du style :
Code: |
ls *.jpg | sed "s/Livre\(.\).chapitre\(.\)_titre_chapitre.page\(.\).jpg/mv '&' 'Livre\1.chap\2.\3.Fr.jpg'/" | sh
|
|
|
Back to top |
|
|
DaiKo Apprentice
Joined: 07 Apr 2004 Posts: 161 Location: Mendes (France)
|
Posted: Mon Jan 10, 2005 12:36 pm Post subject: |
|
|
Merci beaucoup pour cette profusion de reponses,
Dans un premier temps, TTK merci pour ta solution, mais j'aurai du le preciser dans mon post je prefererai eviter d'utiliser un script, car cela m'obligerait a en ecrire un a chaque fois que je serait dans un cas similaire.
Je vais plutot regarder dans la direction de rename et krename, et puis si sa ne correspond pas j'aurai plus qu'a developper mon propre soft...
Si quelqu'un connait un soft qui peut deja faire ce genre d'opération simplement, je suis preneur |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Mon Jan 10, 2005 12:45 pm Post subject: |
|
|
J'ai pas tout compris là. Pourquoi tu ne veux pas un script ? D'après toi que vas faire un soft ? Te demander ce que tu veux faire. Donc tu peux toi même utiliser des variables pour faire de même si tu préfères.
M'enfin je me vais me répèter, j'ai pas compris ton problème de script. |
|
Back to top |
|
|
sireyessire Advocate
Joined: 20 Mar 2003 Posts: 2991 Location: back in Paris, France
|
Posted: Mon Jan 10, 2005 1:43 pm Post subject: |
|
|
Pachacamac wrote: |
Ce matin je me suis dépéché de partir pour aller en cours.
Finallement j'ai raté les 2heures de 7 à 10 et je me suis retrouvé en anglais !
|
LOL
tu es vraiment crevé toi!!!!!
Code: | :s/7/8/g ou :s/2/3/g | _________________ I never think of the future. It comes soon enough.
Albert Einstein
Try simpler first
Shockley |
|
Back to top |
|
|
zdra Veteran
Joined: 30 Nov 2003 Posts: 1693 Location: Bruxelles, Belgique
|
Posted: Mon Jan 10, 2005 2:07 pm Post subject: |
|
|
j'ai examen demain :'( mais qu'est ce que je fais encore devant le pc alors ???? |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Jan 10, 2005 2:08 pm Post subject: |
|
|
Ben, M... alors! |
|
Back to top |
|
|
kernelsensei Bodhisattva
Joined: 22 Feb 2004 Posts: 5619 Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)
|
Posted: Mon Jan 10, 2005 2:10 pm Post subject: |
|
|
zdra wrote: | j'ai examen demain :'( mais qu'est ce que je fais encore devant le pc alors ???? |
Ah ben moi c'est samedi matin ... _________________ $ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join' |
|
Back to top |
|
|
rg421 Apprentice
Joined: 07 Dec 2004 Posts: 192 Location: Strasbourg
|
Posted: Mon Jan 10, 2005 2:26 pm Post subject: |
|
|
Quote: | Bon, loi de Murphy oblige, c'est surement pas le résultat que tu voulais et/ou les fichiers ne sont pas comme ça à la base. Donc, la morale de l'histoire, c'est que tu devrais apprendre la syntaxe de sed, pour pouvoir faire toi-même selon les cas....
|
Juste histoire de mettre mes 0,02cts... et pour la beauté du geste (oui, 3 fork pour renommer un fichier, c'est trop pour moi).
Non, je n'utilise pas sed:
Code: | g54:~/temp rg$ ll
total 0
drwxr-xr-x 7 rg rg 238 Jan 10 14:44 .
drwxr-xr-x 33 rg rg 1122 Jan 10 14:10 ..
-rw-r--r-- 1 rg rg 0 Jan 10 14:44 AutreLivre2.chapitre15_du_comment_je_finis.page1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:13 AutreLivre2.chapitre1_preambule.page1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:12 Livre1.chapitre1_preambule.page1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:12 Livre1.chapitre2_mon_titre_de_chapitre.page2.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:13 Livre1.chapitre5_mon_titre_de_chapitre.page12.jpg
g54:~/temp rg$ for i in *; do oldIFS=$IFS; IFS='._'; set x $i; IFS=$oldIFS; mv "$i" $2.${3/#chapitre/chap}."${i##*page}"; done
g54:~/temp rg$ ll
total 0
drwxr-xr-x 7 rg rg 238 Jan 10 15:21 .
drwxr-xr-x 33 rg rg 1122 Jan 10 14:10 ..
-rw-r--r-- 1 rg rg 0 Jan 10 14:13 AutreLivre2.chap1.1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:44 AutreLivre2.chap15.1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:12 Livre1.chap1.1.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:12 Livre1.chap2.2.jpg
-rw-r--r-- 1 rg rg 0 Jan 10 14:13 Livre1.chap5.12.jpg
g54:~/temp rg$
|
Limpide, non ? Bon, évidemment, pas de numéro de page sur 2 chiffres de façon systématique. mais économie de ressources garantie.
--
Renaud |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Mon Jan 10, 2005 4:41 pm Post subject: |
|
|
@rg421 : Pas mal, je n'aurait pas pensé à le faire comme ça.
@sireyessire : Effectivement il s'agit bien des heures de 8 à 10.
@Tout le monde : Tous aux abris yoyo arrive !!!
On ne peux même pas s'amuser à scripter quelques commandes qu'il va nous sortir RTFM lol
En tout cas je n'ai jamais utilisé rename mais je te promet d'y jetter un coup d'oeil, il a l'air sympatique. |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Mon Jan 10, 2005 4:55 pm Post subject: |
|
|
Pachacamac wrote: | On ne peux même pas s'amuser à scripter quelques commandes qu'il va nous sortir RTFM
En tout cas je n'ai jamais utilisé rename mais je te promet d'y jetter un coup d'oeil, il a l'air sympatique. | Il est surtout fait pour renommer les fichiers/répertoires ...
Mais pourquoi faire simple ...
D'ailleurs si quelqu'un à un script pour afficher le contenu d'un répertoire par ordre alphabétique de noms de fichiers, je suis preneur. _________________ La connaissance s'accroît quand on la partage.
JCB |
|
Back to top |
|
|
sireyessire Advocate
Joined: 20 Mar 2003 Posts: 2991 Location: back in Paris, France
|
Posted: Mon Jan 10, 2005 5:01 pm Post subject: |
|
|
yoyo wrote: | [
D'ailleurs si quelqu'un à un script pour afficher le contenu d'un répertoire par ordre alphabétique de noms de fichiers, je suis preneur. |
un ?? _________________ I never think of the future. It comes soon enough.
Albert Einstein
Try simpler first
Shockley
Last edited by sireyessire on Mon Jan 10, 2005 5:06 pm; edited 2 times in total |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Mon Jan 10, 2005 5:04 pm Post subject: |
|
|
MDR !
ls est déjà par odre alpha.
Je pense que sireyessire n'a pas fait attention. Hé garçon il rigole ! |
|
Back to top |
|
|
sireyessire Advocate
Joined: 20 Mar 2003 Posts: 2991 Location: back in Paris, France
|
Posted: Mon Jan 10, 2005 5:07 pm Post subject: |
|
|
Pachacamac wrote: | MDR !
ls est déjà par odre alpha.
Je pense que sireyessire n'a pas fait attention. Hé garçon il rigole ! |
non pas forcément dans le bon ordre. ça dépend du shell que tu utilises: il te sort pas le même ordre entre bash zsh.... _________________ I never think of the future. It comes soon enough.
Albert Einstein
Try simpler first
Shockley |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Mon Jan 10, 2005 5:33 pm Post subject: |
|
|
Pachacamac wrote: | MDR !
ls est déjà par odre alpha.
Je pense que sireyessire n'a pas fait attention. Hé garçon il rigole ! | C'était en effet une boutade ...
sireyessire wrote: | non pas forcément dans le bon ordre. ça dépend du shell que tu utilises: il te sort pas le même ordre entre bash zsh.... | Tu as des exemples entre bash et zsh ??
Parce que j'ai testé dans plusieurs répertoire et le "ls -l" m'a toujours sorti la même chose dans les 2 cas (liens, majuscules etc.) ...
Et pis de toute façon, c'est pas un script; moi je veux au moins une boucle (et pas une pov' redirection à 2 balles).
PS : par contre, je ne suis pas sûr que l'ordre dépend de l'interpréteur de commande.
man ls :
Quote: | Trier les répertoires en fonction de la taille de fichier et non pas en ordre alphabétique. |
L'ordre alphabétique semble donc être l'ordre par défaut. _________________ La connaissance s'accroît quand on la partage.
JCB |
|
Back to top |
|
|
sireyessire Advocate
Joined: 20 Mar 2003 Posts: 2991 Location: back in Paris, France
|
Posted: Mon Jan 10, 2005 5:43 pm Post subject: |
|
|
yoyo wrote: |
L'ordre alphabétique semble donc être l'ordre par défaut. |
pour ls oui c'est vrai
mais pas pour un Code: | for i in */*.jpg; do echo $i; done | .
il me semble bien que zsh utilise pas par défaut le même ordre de triage que bash _________________ I never think of the future. It comes soon enough.
Albert Einstein
Try simpler first
Shockley |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Mon Jan 10, 2005 5:51 pm Post subject: |
|
|
sireyessire wrote: | yoyo wrote: |
L'ordre alphabétique semble donc être l'ordre par défaut. |
pour ls oui c'est vrai | Alors dans ce cas, ta commande "ls -f | sort -d" est excellente !! _________________ La connaissance s'accroît quand on la partage.
JCB |
|
Back to top |
|
|
|