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

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



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 :
>>>
>>> xxxx-titi  , xxxx-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
>>>
>>>
>


Reply to: