[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: renommer en lot



Vincent Gay a écrit, mardi 29 janvier 2008, à 07:34 :
> Remys Morrissette a écrit :
>> j'ai une série de fichiers (+/- 25000)
>>
>> ../..

>> que j'aimerais renommer de façon séquentiel
>> dans le genre 1, 2, 3, ...., 25000
>> ou encore, 01, 02, 03, ..., a1, a2, a3, ...., e...
>> avec l'ordre par date si possible.
>>
>> des idées ?
>>
>> Remys
>>
> sudo apt-get install krename

Ça me semble un peu lourd quand on n'utilise pas KDE :

,----
| Version: 3.0.9-2.1
| Depends: kdelibs4c2a (>= 4:3.5.4-1), libacl1 (>= 2.2.11-1), libart-2.0-2
| (>=  2.3.16),  libattr1 (>=  2.4.4-1),  libaudio2,  libc6 (>=  2.3.6-6),
| libfam0, libfontconfig1  (>= 2.3.0), libfreetype6 (>=  2.2), libgcc1 (>=
| 1:4.1.0),  libice6,  libidn11  (>=  0.5.18), libjpeg62,  libpng12-0  (>=
| 1.2.8rel),  libqt3-mt  (>=  3:3.3.6),  libsm6,  libstdc++6  (>=  4.1.0),
| libx11-6, libxcursor1 (>> 1.1.2),  libxext6, libxft2 (>> 2.1.1), libxi6,
| libxinerama1, libxrandr2, libxrender1, libxt6, zlib1g (>= 1:1.2.1)
| Size: 315276
`----

~ # apt-get -s install krename
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés : 
  hicolor-icon-theme kdelibs-data kdelibs4c2a libarts1c2a libavahi-qt3-1
  liblua50 liblualib50 libopenexr2c2a libqt3-mt menu-xdg
Paquets suggérés :
  fam libqt3-mt-psql libqt3-mt-mysql libqt3-mt-odbc
Paquets recommandés :
  libarts1-akode
Les NOUVEAUX paquets suivants seront installés :
  hicolor-icon-theme kdelibs-data kdelibs4c2a krename libarts1c2a
  libavahi-qt3-1 liblua50 liblualib50 libopenexr2c2a libqt3-mt menu-xdg
0 mis à jour, 11 nouvellement installés, 0 à enlever et 3 non mis à jour.


Avec  Perl, on  dispose de  /usr/bin/prename (=  rename), qui  permet de
renommer à l'aide de commandes :

 Usage: rename [-v] [-n] [-f] perlexpr [filenames]

Pour  compter, il faudrait  pouvoir initialiser  une variable  ad-hoc en
dehors de  la boucle où s'exécute  « perlexpr » ; j'ai  donc modifié une
copie de prename, en vérifiant que la variable $n était libre

~ $ diff prename /usr/bin/
39,40d38
< my $n = 42;
< 

~ $ grep '\$n\>' prename
my $n = 42;

et peux donc renommer séquentiellement les toto_*

~ $ ./prename -n 's/_/"_" . $n++ . "_"/e' toto_*
toto_a renamed as toto_42_a
toto_b renamed as toto_43_b
toto_c renamed as toto_44_c
toto_d renamed as toto_45_d
toto_e renamed as toto_46_e
toto_f renamed as toto_47_f

Le script reste léger :
~ $ l prename
-rwxr-xr-x 1 lhh lhh 3000 2008-01-29 10:42 prename

Pour des besoins plus avancés, on pourrait ajouter une option comme

 [ -i perlbegin ]

pour ne pas avoir à modifier le code en fonction de la valeur initiale.
-- 
Jacques L'helgoualc'h


Reply to: