Re: HS renommage en masse (expressions régulières)

2019-07-20 Par sujet Samuel Cifuentes-Favini
J'avais rectifié. Merci encore
Le 19 juil. 2019 16:29, "Stephane Ascoet" 
a écrit :

> Le 18/07/2019 à 16:37, Alexandre Goethals a écrit :
>
>> Avec rename:
>>
>>  ~$ ls
>> titiAA2019
>>
>> ~$ rename 's/^(.*)(.{6})/$1-$2/' titiAA2019
>>
>>  ~$ ls
>> titi-AA2019
>>
>> L'idée est la suivante:
>>
>> Faire deux groupes de capture:
>>
>> ^(.*) => correspond à n'importe quel caractère présent n'importe quel
>> nombre de fois (y compris 0) au début de la chaîne. Il s'agit du groupe
>> de capture n°1
>>
>> .{6} => correspond à une chaîne de 6 caractères quelconques. C'est le
>> groupe de capture n°2
>>
>> On renomme toute la chaîne en "groupe de capture n°2"-"groupe de capture
>> n°1"
>>
>
> Bonjour, du coup, faire plutot un "rename 's/^(.*)(.{6})/$2-$1/'" ;-)
>
> Au passage, au sujet de  es/2019/find_storage_node.html>, je connais depuis longtemps ce site que
> je ne trouve pas du tout didactique, et on sent bien que c'est un
> francophone qui ecrit en Anglais :-) L'auteur est Simon Descarpentries, un
> grand militant que je connais ;-)
> Et je n'ai pas inxi sur ma Devuan...
> --
> Cordialement, Stephane Ascoet
>
>


Re: HS renommage en masse (expressions régulières)

2019-07-19 Par sujet Stephane Ascoet

Le 18/07/2019 à 16:37, Alexandre Goethals a écrit :

Avec rename:

 ~$ ls
titiAA2019

~$ rename 's/^(.*)(.{6})/$1-$2/' titiAA2019

 ~$ ls
titi-AA2019

L'idée est la suivante:

Faire deux groupes de capture:

^(.*) => correspond à n'importe quel caractère présent n'importe quel
nombre de fois (y compris 0) au début de la chaîne. Il s'agit du groupe
de capture n°1

.{6} => correspond à une chaîne de 6 caractères quelconques. C'est le
groupe de capture n°2

On renomme toute la chaîne en "groupe de capture n°2"-"groupe de capture
n°1"


Bonjour, du coup, faire plutot un "rename 's/^(.*)(.{6})/$2-$1/'" ;-)

Au passage, au sujet de 
, je 
connais depuis longtemps ce site que je ne trouve pas du tout 
didactique, et on sent bien que c'est un francophone qui ecrit en 
Anglais :-) L'auteur est Simon Descarpentries, un grand militant que je 
connais ;-)

Et je n'ai pas inxi sur ma Devuan...
--
Cordialement, Stephane Ascoet



Re: HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Bruno Volpi

petit logiciel sympa pour ce genre de chose PYremaner

Le 18/07/2019 à 12:45, Alexandre Goethals a écrit :

Bonjour,

la commande rename fournie par le paquet du même nom permet de renommer
en masse des fichiers en utilisant des regex perl (avec option -n pour
simuler le renommage)

Il faut utiliser des groupes de capture pour le renommage. A mon avis
pour simplifier la tâche, si possible, séparer les fichiers dans des
répertoires différents selon leur schéma de nommage permet de se
contenter de regex un peu moins compliquées.

Le 18/07/2019 à 12:17, Samuel Cifuentes a écrit :

Salut

je dois "nettoyer" un ensemble de fichiers dont les noms ressemblent à
ceci

2019 toto   (2019/espace/toto)

2018 titi

2019 titi

tititoto (2018)

titi (2019)

toto (2017)   etc.

par ailleurs, certains des contenus des parenthèses ne sont pas
seulement des chiffres par exemple "toto (jan 2019)"

j'ai déjà effectué un gros travail de tri et de dédoublonnage donc il
ne devrait plus y avoir de fichier à contenu identique dans cet
ensemble de répertoires mais je sèche sur l'étape suivante:

je souhaite renommer en masse tous les fichiers selon le schéma suivant :

-titi  , -toto etc.

par exemple  "toto (jan 2019)"
toto/espace/parenthèse/contenu-de-la-parenthèse/parenthèse devrait
être renommé en "2019-toto"

en récupérant donc le contenu NUMERIQUE exclusivement des parenthèses
figurant dans le nom de *certains* fichiers ,  en virant l'espace de
fin et en ajoutant un tiret plutôt qu'une espace entre le contenu de
la parenthèse (qui donc se trouvera au début du nom) et la suite du
nom de fichier.

j'ai su faire ça il y a trés longtemps avec awk mais là je bute sur le
fait que les noms de fichiers n'ont pas tous le même nombre de caractères


pourriez-vous m'aider ?

Sam





--
logogite*Roseline & Bruno Volpi**
**Chaillac**
**19450 Chamboulive*

F: 05 55 21 27 57
M: 06 78 07 40 27

web : http://www.brunovolpi.com/gites



Re: HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Alexandre Goethals
Avec rename:

 ~$ ls
titiAA2019

~$ rename 's/^(.*)(.{6})/$1-$2/' titiAA2019

 ~$ ls
titi-AA2019

L'idée est la suivante:

Faire deux groupes de capture:

^(.*) => correspond à n'importe quel caractère présent n'importe quel
nombre de fois (y compris 0) au début de la chaîne. Il s'agit du groupe
de capture n°1

.{6} => correspond à une chaîne de 6 caractères quelconques. C'est le
groupe de capture n°2

On renomme toute la chaîne en "groupe de capture n°2"-"groupe de capture
n°1"


Le 18/07/2019 à 16:09, Samuel Cifuentes a écrit :
> j'ai pas mal avancé à grands coups de gprename mais je bute encore
>
> ma question est désormais beaucoup plus simple :
>
> je désire prendre les 6 derniers caractères du nom d'un fichier (qui
> sont desormais trois lettres et des chiffres)
>
> et les coller simplement au début du nom de ce meme fichier
>
> titiAAA2019  deviendrait donc AAA2019-titi
>
> quelle est donc la regex pour faire ça ?
>
>
>
> Le 18/07/2019 à 12:45, Alexandre Goethals a écrit :
>> Bonjour,
>>
>> la commande rename fournie par le paquet du même nom permet de renommer
>> en masse des fichiers en utilisant des regex perl (avec option -n pour
>> simuler le renommage)
>>
>> Il faut utiliser des groupes de capture pour le renommage. A mon avis
>> pour simplifier la tâche, si possible, séparer les fichiers dans des
>> répertoires différents selon leur schéma de nommage permet de se
>> contenter de regex un peu moins compliquées.
>>
>> Le 18/07/2019 à 12:17, Samuel Cifuentes a écrit :
>>> Salut
>>>
>>> je dois "nettoyer" un ensemble de fichiers dont les noms ressemblent à
>>> ceci
>>>
>>> 2019 toto   (2019/espace/toto)
>>>
>>> 2018 titi
>>>
>>> 2019 titi
>>>
>>> tititoto (2018)
>>>
>>> titi (2019)
>>>
>>> toto (2017)   etc.
>>>
>>> par ailleurs, certains des contenus des parenthèses ne sont pas
>>> seulement des chiffres par exemple "toto (jan 2019)"
>>>
>>> j'ai déjà effectué un gros travail de tri et de dédoublonnage donc il
>>> ne devrait plus y avoir de fichier à contenu identique dans cet
>>> ensemble de répertoires mais je sèche sur l'étape suivante:
>>>
>>> je souhaite renommer en masse tous les fichiers selon le schéma
>>> suivant :
>>>
>>> -titi  , -toto etc.
>>>
>>> par exemple  "toto (jan 2019)"
>>> toto/espace/parenthèse/contenu-de-la-parenthèse/parenthèse devrait
>>> être renommé en "2019-toto"
>>>
>>> en récupérant donc le contenu NUMERIQUE exclusivement des parenthèses
>>> figurant dans le nom de *certains* fichiers ,  en virant l'espace de
>>> fin et en ajoutant un tiret plutôt qu'une espace entre le contenu de
>>> la parenthèse (qui donc se trouvera au début du nom) et la suite du
>>> nom de fichier.
>>>
>>> j'ai su faire ça il y a trés longtemps avec awk mais là je bute sur le
>>> fait que les noms de fichiers n'ont pas tous le même nombre de
>>> caractères
>>>
>>>
>>> pourriez-vous m'aider ?
>>>
>>> Sam
>>>
>>>
>



Re: HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Samuel Cifuentes

j'ai pas mal avancé à grands coups de gprename mais je bute encore

ma question est désormais beaucoup plus simple :

je désire prendre les 6 derniers caractères du nom d'un fichier (qui 
sont desormais trois lettres et des chiffres)


et les coller simplement au début du nom de ce meme fichier

titiAAA2019  deviendrait donc AAA2019-titi

quelle est donc la regex pour faire ça ?



Le 18/07/2019 à 12:45, Alexandre Goethals a écrit :

Bonjour,

la commande rename fournie par le paquet du même nom permet de renommer
en masse des fichiers en utilisant des regex perl (avec option -n pour
simuler le renommage)

Il faut utiliser des groupes de capture pour le renommage. A mon avis
pour simplifier la tâche, si possible, séparer les fichiers dans des
répertoires différents selon leur schéma de nommage permet de se
contenter de regex un peu moins compliquées.

Le 18/07/2019 à 12:17, Samuel Cifuentes a écrit :

Salut

je dois "nettoyer" un ensemble de fichiers dont les noms ressemblent à
ceci

2019 toto   (2019/espace/toto)

2018 titi

2019 titi

tititoto (2018)

titi (2019)

toto (2017)   etc.

par ailleurs, certains des contenus des parenthèses ne sont pas
seulement des chiffres par exemple "toto (jan 2019)"

j'ai déjà effectué un gros travail de tri et de dédoublonnage donc il
ne devrait plus y avoir de fichier à contenu identique dans cet
ensemble de répertoires mais je sèche sur l'étape suivante:

je souhaite renommer en masse tous les fichiers selon le schéma suivant :

-titi  , -toto etc.

par exemple  "toto (jan 2019)"
toto/espace/parenthèse/contenu-de-la-parenthèse/parenthèse devrait
être renommé en "2019-toto"

en récupérant donc le contenu NUMERIQUE exclusivement des parenthèses
figurant dans le nom de *certains* fichiers ,  en virant l'espace de
fin et en ajoutant un tiret plutôt qu'une espace entre le contenu de
la parenthèse (qui donc se trouvera au début du nom) et la suite du
nom de fichier.

j'ai su faire ça il y a trés longtemps avec awk mais là je bute sur le
fait que les noms de fichiers n'ont pas tous le même nombre de caractères


pourriez-vous m'aider ?

Sam






Re: HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Bernard Schoenacker



- Mail original -
> De: "Alexandre Goethals" 
> À: debian-user-french@lists.debian.org
> Envoyé: Jeudi 18 Juillet 2019 12:45:59
> Objet: Re: HS renommage en masse (expressions régulières)
> 
> Bonjour,
> 
> la commande rename fournie par le paquet du même nom permet de
> renommer
> en masse des fichiers en utilisant des regex perl (avec option -n
> pour
> simuler le renommage)
> 
> Il faut utiliser des groupes de capture pour le renommage. A mon avis
> pour simplifier la tâche, si possible, séparer les fichiers dans des
> répertoires différents selon leur schéma de nommage permet de se
> contenter de regex un peu moins compliquées.

bonjour,

serait il possible d'utiliser le paquet detox ?

merci 
slt
bernard



Re: HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Alexandre Goethals
Bonjour,

la commande rename fournie par le paquet du même nom permet de renommer
en masse des fichiers en utilisant des regex perl (avec option -n pour
simuler le renommage)

Il faut utiliser des groupes de capture pour le renommage. A mon avis
pour simplifier la tâche, si possible, séparer les fichiers dans des
répertoires différents selon leur schéma de nommage permet de se
contenter de regex un peu moins compliquées.

Le 18/07/2019 à 12:17, Samuel Cifuentes a écrit :
> Salut
>
> je dois "nettoyer" un ensemble de fichiers dont les noms ressemblent à
> ceci
>
> 2019 toto   (2019/espace/toto)
>
> 2018 titi
>
> 2019 titi
>
> tititoto (2018)
>
> titi (2019)
>
> toto (2017)   etc.
>
> par ailleurs, certains des contenus des parenthèses ne sont pas
> seulement des chiffres par exemple "toto (jan 2019)"
>
> j'ai déjà effectué un gros travail de tri et de dédoublonnage donc il
> ne devrait plus y avoir de fichier à contenu identique dans cet
> ensemble de répertoires mais je sèche sur l'étape suivante:
>
> je souhaite renommer en masse tous les fichiers selon le schéma suivant :
>
> -titi  , -toto etc.
>
> par exemple  "toto (jan 2019)"
> toto/espace/parenthèse/contenu-de-la-parenthèse/parenthèse devrait
> être renommé en "2019-toto"
>
> en récupérant donc le contenu NUMERIQUE exclusivement des parenthèses
> figurant dans le nom de *certains* fichiers ,  en virant l'espace de
> fin et en ajoutant un tiret plutôt qu'une espace entre le contenu de
> la parenthèse (qui donc se trouvera au début du nom) et la suite du
> nom de fichier.
>
> j'ai su faire ça il y a trés longtemps avec awk mais là je bute sur le
> fait que les noms de fichiers n'ont pas tous le même nombre de caractères
>
>
> pourriez-vous m'aider ?
>
> Sam
>
>



HS renommage en masse (expressions régulières)

2019-07-18 Par sujet Samuel Cifuentes

Salut

je dois "nettoyer" un ensemble de fichiers dont les noms ressemblent à ceci

2019 toto   (2019/espace/toto)

2018 titi

2019 titi

tititoto (2018)

titi (2019)

toto (2017)   etc.

par ailleurs, certains des contenus des parenthèses ne sont pas 
seulement des chiffres par exemple "toto (jan 2019)"


j'ai déjà effectué un gros travail de tri et de dédoublonnage donc il ne 
devrait plus y avoir de fichier à contenu identique dans cet ensemble de 
répertoires mais je sèche sur l'étape suivante:


je souhaite renommer en masse tous les fichiers selon le schéma suivant :

-titi  , -toto etc.

par exemple  "toto (jan 2019)" 
toto/espace/parenthèse/contenu-de-la-parenthèse/parenthèse devrait être 
renommé en "2019-toto"


en récupérant donc le contenu NUMERIQUE exclusivement des parenthèses 
figurant dans le nom de *certains* fichiers ,  en virant l'espace de fin 
et en ajoutant un tiret plutôt qu'une espace entre le contenu de la 
parenthèse (qui donc se trouvera au début du nom) et la suite du nom de 
fichier.


j'ai su faire ça il y a trés longtemps avec awk mais là je bute sur le 
fait que les noms de fichiers n'ont pas tous le même nombre de caractères



pourriez-vous m'aider ?

Sam




Re: [Résolu] Re: Renommage en masse

2006-08-24 Par sujet Daniel C

David BERCOT a écrit :

Pour répondre à la question ci-dessous, il me semble que rename ne
travaille que dans le répertoire courant alors qu'avec un find, on peut
toucher toute une arborescence...


Non, non, rename travaille sur tous les fichiers qu'on lui indique, mais c'est 
vrai qu'il n'est pas récursif.

par exemple
rename -n 's/a/e/g' *
remplace les a par des e dans le rep courant (enfin, le -n indique de ne pas le faire 
pour de vrai)
mais
rename -n 's/a/e/g' */*
effectue son renommage sur tous les fichiers de tous les répertoires du rep 
courant
et de même
rename -n 's/a/e/g' /*
le fera sur tous les fichiers (et repertoires) au 1er niveau après la racine.

Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Vincent Bernat
OoO En  ce début de  soirée du mardi  22 août 2006, vers  21:16, David
BERCOT [EMAIL PROTECTED] disait:

 Ainsi, j'ai fait :
 find . -name '*Th*.*' -type f -exec mv -f {} '*rt*.*' \;
 (dans cet exemple, je remplace Th par rt).

 Il semble bien me trouver le motif, mais il remplace le nom par
 '*rt*.*' !!!

Regarde plutôt mmv.
-- 
Don't compare floating point numbers just for equality.
- The Elements of Programming Style (Kernighan  Plauger)


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et
Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Bruno Berteau

Quoting Vincent Bernat [EMAIL PROTECTED]:


OoO En  ce début de  soirée du mardi  22 août 2006, vers  21:16, David
BERCOT [EMAIL PROTECTED] disait:


Ainsi, j'ai fait :
find . -name '*Th*.*' -type f -exec mv -f {} '*rt*.*' \;
(dans cet exemple, je remplace Th par rt).



Il semble bien me trouver le motif, mais il remplace le nom par
'*rt*.*' !!!


Regarde plutôt mmv.


Salut,

Essaie :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/` {} \;

@+

--
Bruno Berteau
http://b.berteau.free.fr



Re: Renommage en masse

2006-08-23 Par sujet Bruno Berteau

Quoting Bruno Berteau [EMAIL PROTECTED]:


Salut,

Essaie :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/` {} \;

@+



Oups. Il y avait une petite erreur dans la ligne de commande. C'est

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;

@+

--
Bruno Berteau
http://b.berteau.free.fr


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Daniel C

Bruno Berteau a écrit :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;


Dans ce cas, pourquoi ne pas mettre directement
rename 's/Th/rt/' *Th*.*
?

C'est vrai que que cette dernière commande peut (peut-être) renvoyer 
argument list too long s'il y a trop de fichiers qui correspondent à 
*Th*.*, mais cela ne m'est jamais arrivé (même avec qq centaines de 
fichiers).


Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Bruno Berteau

Quoting Daniel C [EMAIL PROTECTED]:


Bruno Berteau a écrit :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;


Dans ce cas, pourquoi ne pas mettre directement
rename 's/Th/rt/' *Th*.*
?

C'est vrai que que cette dernière commande peut (peut-être) renvoyer
argument list too long s'il y a trop de fichiers qui correspondent
à *Th*.*, mais cela ne m'est jamais arrivé (même avec qq centaines
de fichiers).


Salut,

rename agira sur tous les types de fichiers (liens, pipe,
répertoires,...) s'il correspondent à la recherche alors que find ne
renomera que les fichiers réguliers (option -type f)

@+


--
Bruno Berteau
http://b.berteau.free.fr



Re: Renommage en masse

2006-08-23 Par sujet Daniel C

Bruno Berteau a écrit :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;


Dans ce cas, pourquoi ne pas mettre directement
rename 's/Th/rt/' *Th*.*



rename agira sur tous les types de fichiers (liens, pipe,
répertoires,...) s'il correspondent à la recherche alors que find ne
renomera que les fichiers réguliers (option -type f)


Attention quand même aux répertoires, car si le pattern correspond aussi 
à un répertoire, le rename va planter avec le find.


Exemple:
avec
unrepTOTO/unfichierTOTO
rename 's/TOTO/titi/' *TOTO*

renomme bien unrepTOTO/unfichierTOTO en unreptiti/unfichiertiti

mais
find -type f -name '*TOTO*' -exec rename 's/TOTO/titi/' {} \;
renvoie Can't rename ./unrepTOTO/unfichierTOTO 
/unreptiti/unfichierTOTO: Aucun fichier ou répertoire de ce type car 
le rep unreptiti n'existe pas.


Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Charles Plessy
Le Wed, Aug 23, 2006 at 12:39:12PM +0200, Daniel C a écrit :
 
 mais
 find -type f -name '*TOTO*' -exec rename 's/TOTO/titi/' {} \;
 renvoie Can't rename ./unrepTOTO/unfichierTOTO 
 /unreptiti/unfichierTOTO: Aucun fichier ou répertoire de ce type car 
 le rep unreptiti n'existe pas.

Dans ce cas, il faut ruser:

kunpuu|charles|$ rename -n 's#TOTO#titi#' repTOTO/fichTOTO 
repTOTO/fichTOTO renamed as reptiti/fichTOTO

kunpuu|charles|$ rename -n 's#(.*/?)TOTO#$1titi#' repTOTO/fichTOTO 
repTOTO/fichTOTO renamed as repTOTO/fichtiti

Bonne journée,

-- 
Charles Plessy
http://charles.plessy.org
Wako, Saitama, Japan


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et
Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Daniel C

Charles Plessy a écrit :

Le Wed, Aug 23, 2006 at 12:39:12PM +0200, Daniel C a écrit :

mais
find -type f -name '*TOTO*' -exec rename 's/TOTO/titi/' {} \;
renvoie Can't rename ./unrepTOTO/unfichierTOTO 
/unreptiti/unfichierTOTO: Aucun fichier ou répertoire de ce type car 
le rep unreptiti n'existe pas.


Dans ce cas, il faut ruser:

kunpuu|charles|$ rename -n 's#TOTO#titi#' repTOTO/fichTOTO 
repTOTO/fichTOTO renamed as reptiti/fichTOTO


Si tu enlève le -n tu auras une erreur...

kunpuu|charles|$ rename -n 's#(.*/?)TOTO#$1titi#' repTOTO/fichTOTO 
repTOTO/fichTOTO renamed as repTOTO/fichtiti


Et les fichiers qui seraient dans le rep courant ? (il devrait suffire 
d'appeler les fichiers avec ./ au début).


Pour le cas du fichier dans repTATA/repTOTO/fichierTOTO, le '?' doit 
marcher. J'essaie de garder ça en tête pour ne renommer que les fichiers 
mais pas les rep parents.


Bref, on peut jouer assez longtemps avec les regexp... et chaque cas est 
particulier.


J'espèrais que l'on pouvait utiliser
rename 's#TOTO#titi#2' *
(si on tous les fichiers à renommer sont dans un rep du rep courant)
mais ce qui marche avec sed marche pas avec rename... (apparemment on 
peut juste mettre g ou i comme option).


Daniel


Bonne journée,


itou


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Charles Plessy
Le Wed, Aug 23, 2006 at 01:58:39PM +0200, Daniel C a écrit :
 Charles Plessy a écrit :
 
 kunpuu|charles|$ rename -n 's#TOTO#titi#' repTOTO/fichTOTO 
 repTOTO/fichTOTO renamed as reptiti/fichTOTO
 
 Si tu enlève le -n tu auras une erreur...

Normal, car là n'était pas l'astuce. Désolé d'avoir introduit la
notation en dièse par paresse. Elle fait la même chose que le
traditionnel s///, mais elle évite d'avoir à protéger les barres
obliques avec des barres contre-obliques :

s#tutu/TOTO#tutu/titi# équivaut à s/tutu\/TOTO/tutu\/titi/

(et on peut remplacer les dièses par pas mal d'autres caractères...)

 
 kunpuu|charles|$ rename -n 's#(.*/?)TOTO#$1titi#' repTOTO/fichTOTO 
 repTOTO/fichTOTO renamed as repTOTO/fichtiti
 
 Et les fichiers qui seraient dans le rep courant ? (il devrait suffire 
 d'appeler les fichiers avec ./ au début).

sorbet【~】$ touch fichTOTO
sorbet【~】$ rename -n 's#(.*/?)TOTO#$1titi#' fichTOTO
fichTOTO renamed as fichtiti

Le point d'interrogation signifie « zéro ou un ». Et comme l'astérisque
utilisée avant est gloutonne, elle englobera tous les « / » sauf le
dernier.

Bonne journée,

-- 
Charles


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et
Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Émile CARRY
Le Wed, 23 Aug 2006 11:53:07 +0200,
Daniel C [EMAIL PROTECTED] a écrit :

 Bruno Berteau a écrit :
  find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;
 
 Dans ce cas, pourquoi ne pas mettre directement
 rename 's/Th/rt/' *Th*.*
 ?
 
 C'est vrai que que cette dernière commande peut (peut-être) renvoyer 
 argument list too long s'il y a trop de fichiers qui correspondent
 à *Th*.*,

ah ben j'ai justement eu le pb au début de la semaine, je donne une
solution à ce pb, ça sort du fil, mais ça sera dans les archives :
find ton_rep/ -name le_motif_de_ton_fichier* -print0|xargs -0 -i cp
{} .

bien entendu, tu remplaces cp par la commande qui t'intéresse, la
subtilité revenant au -i et {} de xargs.

 mais cela ne m'est jamais arrivé (même avec qq centaines
 de fichiers).
la limite vient de bash, mais je ne sais pas quelle est la limite

mil
-- 
Du oui au non, combien de peut-être ?
-+- Julio Cortázar -+-



Re: Renommage en masse

2006-08-23 Par sujet Daniel C

Émile CARRY a écrit :

find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;

Dans ce cas, pourquoi ne pas mettre directement
rename 's/Th/rt/' *Th*.*

C'est vrai que que cette dernière commande peut (peut-être) renvoyer 
argument list too long s'il y a trop de fichiers qui correspondent

à *Th*.*


ah ben j'ai justement eu le pb au début de la semaine, je donne une
solution à ce pb


Si ce pb survient avec la 2e commande, la 1re l'avait résolu, find passe les 
fichiers un par un à rename et on a donc pas besoin de xargs.

Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Renommage en masse

2006-08-23 Par sujet Vincent Bernat
OoO En  ce début d'après-midi nuageux  du mercredi 23  août 2006, vers
14:40, Émile CARRY [EMAIL PROTECTED] disait:

 mais cela ne m'est jamais arrivé (même avec qq centaines
 de fichiers).
 la limite vient de bash, mais je ne sais pas quelle est la limite

C'est  une limite du  noyau. Elle  est fixée  à 128  Ko, environnement
compris.
-- 
BOFH excuse #434:
Please state the nature of the technical emergency


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et
Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



[Résolu] Re: Renommage en masse

2006-08-23 Par sujet David BERCOT
Bonjour,

Tout d'abord, un grand merci à tous pour vos nombreuses réponses (y
compris Bernarowitz qui se reconnaitra ;-))).

Pour répondre à la question ci-dessous, il me semble que rename ne
travaille que dans le répertoire courant alors qu'avec un find, on peut
toucher toute une arborescence...
En tous cas, c'est ce que j'ai fait ;-)

Encore merci et bonne soirée.

David.

Le mercredi 23 août 2006 à 12:13 +0200, Bruno Berteau a écrit :
 Quoting Daniel C [EMAIL PROTECTED]:
 
  Bruno Berteau a écrit :
  find . -name '*Th*.*' -type f -exec rename 's/Th/rt/' {} \;
 
  Dans ce cas, pourquoi ne pas mettre directement
  rename 's/Th/rt/' *Th*.*
  ?
 
  C'est vrai que que cette dernière commande peut (peut-être) renvoyer 
  argument list too long s'il y a trop de fichiers qui correspondent 
  à *Th*.*, mais cela ne m'est jamais arrivé (même avec qq centaines 
  de fichiers).
 
 Salut,
 
 rename agira sur tous les types de fichiers (liens, pipe,
 répertoires,...) s'il correspondent à la recherche alors que find ne
 renomera que les fichiers réguliers (option -type f)
 
 @+


signature.asc
Description: Ceci est une partie de message	numériquement signée


Renommage en masse [was Re: Effacement récursif d'un fichier...]

2006-08-22 Par sujet David BERCOT
Bonjour,

Je ressors un vieux mail car j'ai une nouvelle question un peu
similaire...

Je souhaiterais renommer tout un ensemble de fichiers qui contiennent un
mot, en remplaçant juste ce mot...

J'ai essayé d'adapter ce qu'il y avait en-dessous sans succès :-(

Ainsi, j'ai fait :
find . -name '*Th*.*' -type f -exec mv -f {} '*rt*.*' \;
(dans cet exemple, je remplace Th par rt).

Il semble bien me trouver le motif, mais il remplace le nom par
'*rt*.*' !!!

Auriez-vous un début de piste ?

Merci d'avance.

David.

Le dimanche 23 juillet 2006 à 22:19 +0200, Yves Rutschle a écrit :
 On Sat, Jul 22, 2006 at 10:21:52AM +0200, David BERCOT wrote:
   $ find . -name 'toto.txt' -type f -exec rm -f {} \;
 
 find . -name 'toto.txt' -type f -print0 | xargs -0 rm
 
 est mieux car il ne crée qu'un processus rm qui efface tous
 les fichiers, au lieu d'executer un processus rm pour chaque
 fichier.
 
  C'est là qu'on voit que je manque de pratique sur le sujet...
 
 C'est en ligne-de-commandant que l'on devient
 ligne-de-commandeur. Il faut du temps :). 
 
 Y.


signature.asc
Description: Ceci est une partie de message	numériquement signée


Re: Renommage en masse [was Re: Effacement récursif d'un fichier...]

2006-08-22 Par sujet Daniel C

David BERCOT a écrit :

Bonjour,

Je ressors un vieux mail car j'ai une nouvelle question un peu
similaire...

Je souhaiterais renommer tout un ensemble de fichiers qui contiennent un
mot, en remplaçant juste ce mot...

J'ai essayé d'adapter ce qu'il y avait en-dessous sans succès :-(

Ainsi, j'ai fait :
find . -name '*Th*.*' -type f -exec mv -f {} '*rt*.*' \;
(dans cet exemple, je remplace Th par rt).


Utilise rename (petit paquet très pratique).
pour ton exemple ça donne

rename 's/Th/rt/' *

Mais on peut y mettre toutes les regexp que l'on veut avec la syntaxe
rename regexp fichiers

Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et

Reply-To:

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]