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: