renommage de fichier

Autres projets et contributions
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2785
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées
Contact :

Message par mélodie » sam. 02 févr. 2008, 13:56

wain a écrit :(...)perl, python ou zsh. Si nous linuxiens acharnés ne promouvons pas la diversité, qui le fera ?
+1

Je ne connais toujours rien au shell, mais ne peux m'empêcher de voir que la commande zsh est ultra-courte (et compréhensible à mes yeux de néophyte) par rapport aux autres solutions proposées.

Vive la diversité ! :D

Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)
Contact :

Message par vincentxavier » sam. 02 févr. 2008, 14:27

djaac a écrit :bapt,
si je comprend bien ,
pour mon exemple, si je dois enommer ts le fichiers sa1 sa2 sa36, je tape :
zmv 'sa(*)' 'sa.2008_01_$1'

mais $1 correspond à quoi, peux tu me faire avec exemple concret stp.

merci
L'exemple nécessite d'utiliser zsh et la fonction zmv, qui ne sont ni POSIX, ni même dans les extensions GNU. Il s'agit là d'extensions propres à zsh.

Pour le commenter, disons que le (*) permet de stocker la partie située après 'sa' dans la variable $1. Par exemple,

Code : Tout sélectionner

zmv '(sa)(*)' '200801$1\ $2'
permettrait de renommer les fichiers sa* en 200801* sa.

Il existe quantité de méthode pour faire ce que tu veux. Personnellement, je ferais

Code : Tout sélectionner

for i in sa* ; do mv $i `echo $i | sed -e 's/([0-9]*)/.2008_01_\1/' ` ; done ;
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image

Cactus
Maître du Kyudo
Messages : 2073
Inscription : sam. 16 sept. 2006, 10:39
Localisation : 31 - Toulouse Nord

Message par Cactus » sam. 02 févr. 2008, 15:04

moi, je veux bien découvrir tout plein de solutions... mais à quoi bon se compliquer la tâche lorsqu'une commande simple existe déjà ?
Pourquoi ne pas réécrire dans ce cas toutes les commandes en script zsh ? :shock:
ok, je caricature, mais bon, j'avoue être surpris de la réaction de djaac... (et pas des autres pour les propositions zsh & co !) ;)

Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)
Contact :

Message par wain » sam. 02 févr. 2008, 15:17

vincentxavier a écrit :Il existe quantité de méthode pour faire ce que tu veux. Personnellement, je ferais

Code : Tout sélectionner

for i in sa* ; do mv $i `echo $i | sed -e 's/([0-9]*)/.2008_01_\1/' ` ; done ;
Si on se limite au shell par défaut présent dans Archlinux (bash), autant utiliser ses fonctions de substitution au lieu de faire appel à un xième outil externe (sed):

Code : Tout sélectionner

for i in sa*; do mv $i ${i/sa/sa.2008_01_}; done

Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)
Contact :

Message par vincentxavier » sam. 02 févr. 2008, 15:53

Le problème là est de pouvoir "catcher" une partie de l'expression régulière pour la réutiliser !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image

Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)
Contact :

Message par wain » sam. 02 févr. 2008, 20:51

vincentxavier a écrit :Le problème là est de pouvoir "catcher" une partie de l'expression régulière pour la réutiliser !
Et tu sais pas le faire sans sed ? :shock:

Avatar de l’utilisateur
bapt
Daikyu
Messages : 85
Inscription : jeu. 20 sept. 2007, 09:20
Contact :

Message par bapt » sam. 02 févr. 2008, 23:50

Je répond tardivement, mais l'intérêt de montrer la solution zsh est pour plusieurs raison :
1/ Pour informer les gens que l'on peut faire ce genre de choses sans problèmes et très simplement sous zsh.
2/Si des gens ont le même problème et sont utilisateurs de zsh, une recherche sur le forum les amènera sur certainement sur ce thread et ils auront leur réponse.
3/ Le libre propose plusieurs solution pour le même genre de choses, c'est bien de les présentées, de plus je n'ai présenté que zsh, mais aussi une solution graphique qui fait en gros la même choses avec le navigateur de fichier de xfce thunar.
4/ parce que faire du prosel zsh c'est seconde nature pour moi et que je ne peux pas m'en empêcher.

Avatar de l’utilisateur
warnaud
Maître du Kyudo
Messages : 1640
Inscription : ven. 11 août 2006, 17:05
Localisation : Collonges (01) France
Contact :

Message par warnaud » dim. 03 févr. 2008, 16:52

J'ai coupé la dérive dans la discussion :) => http://forums.archlinux.fr/topic1407.html
Plus ça rate, plus ça a de chance de réussir. En somme, un succès n'est qu'une erreur qui a finit par réussir (même par erreur). Ne déséspérez donc pas et perseverez. Utilisez La Rache™
Patientia quod lard quod barrus planto diligo ut licentia
—¤÷(`[¤*Powered By *¤]´)÷¤—
Archlinux ~ Fvwm ~ Irssi ~ URxvt

Répondre