logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-04-2023 22:09:38

totoZero7
Membre
Distrib. : Debian 11.6 Bullseye
Noyau : 5.10.0-21-amd64
(G)UI : Mate 1.24.1
Inscription : 05-07-2020

[Résolu] Renommer par lot en ajoutant 1 caractère précis

Bonjour,


Je cherche à renommer un lot de fichiers dans un répertoire en y ajoutant le caractère underscore "_" dans chacun de ces fichiers à un endroit précis.
    Ce sont des fichiers de musique qui peuvent avoir une extension finale différente (.mp3 .m4a). Mais tous commencent de la même façon.

- Chaque fichier commencent par "RAXXX_"
    "RA" est le nom attribué à la source
    "XXX" est le numéro de réference du fichier
    "_" un underscore s'éppart la référence du nom de l'artiste
S'en suit la dénomination (nom de l'artiste)
    Exemple: RA001_michael jackson et son orchestre.mp3


Chaque dénomination (nom de l'artiste) peut être écrite avec des espaces, des tirets ou autres
Exemple:
RA001_musique de michel sardou.mp3
RA002_truc-de machin.m4a
RA003_musique-qui-déboite.wma
RA004_jean-paul qui a mal et dit(ouioui).mp3


Je souhaite ajouter le caractère underscore "_" entre "RA" et "le numéro de référence" de tout ce répertoire, pour que cela donne ceci:
RA_001_musique de michel sardou.mp3
RA_002_truc de machin.m4a
RA_003_musique-qui-déboite.wma
RA_004_jean-paul qui a mal et dit(ouioui)..mp3


Je ne maitrise carrément pas BASH et l'algo.
Du coup, je viens vous demander de l'aide.

Quelle serait la commande bash dans le terminal, voire aussi dans un fichier script, pour entreprendre cela ?


Merci à vous,


------------------------------------------------------------------------------------------------------------------------------------
Edit: Résumé des propositions dans le fil:
rename                        # En ligne de commande
                                    # au message  #7 je donne une explication suivi de quelques exemples.
caja-rename                # En mode graphique (tésté, simple)
gprename                    # En mode graphique    (pas testé mais a l'air similaire à caja-rename)
renommer en masse   # En mode graphique avec Thunar (pas testé)

Dernière modification par totoZero7 (05-04-2023 11:16:06)

Hors ligne

#2 04-04-2023 12:34:30

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

hello
j'ai regardé rename
donc sa serait si je me trompe pas

rename -n 's/^RA/RA_/' *



renomme tout les fichiers contenant RA en début de ligne (^RA) par RA_
-n c'est le mode simulation, aucun fichier ne sera traités, suffit de retirer -n si c'est ok

quoi que en générale je fais sa en graphique avec l'option de renommage de caja


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 04-04-2023 13:10:37

Mugen
Membre
Distrib. : Debian Bookworm
Noyau : Linux 6.1.0-9-amd64
(G)UI : Mate
Inscription : 04-02-2014

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

Bonjour
Sinon tu peux le faire graphiquement aussi, si tu as bien Mate comme indiqué dans ton profil, tu peux installer caja-rename.
Ça va te rajouter une option Rename dans le menu contextuel de Caja.
Tu sélectionnes tous les fichiers que tu veux renommer puis clic droit, puis Rename

Dernière modification par Mugen (04-04-2023 13:11:02)


mon ancien pseudo : bartaba

Hors ligne

#4 04-04-2023 13:17:26

saitama-san
Membre
Distrib. : stable
(G)UI : gnome
Inscription : 28-07-2019

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

en graphique il gprename
mais je valide la solution de Croutons

Hors ligne

#5 04-04-2023 14:13:31

vv222
Administrateur
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

Croutons a écrit :

rename -n 's/^RA/RA_/' *



Je confirme la syntaxe, c’est aussi ce que j’aurais conseillé.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

En ligne

#6 04-04-2023 14:24:29

christian
Membre
Distrib. : Debian GNU/Linux 12 ( bookworm )
Noyau : Linux 6.1.0-18-amd64
(G)UI : lightdm - mate
Inscription : 04-04-2023

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

bonjour,

+1 pour gprename. c'est ce que j'utilise et je le trouve très bien.

Hors ligne

#7 04-04-2023 15:48:42

totoZero7
Membre
Distrib. : Debian 11.6 Bullseye
Noyau : 5.10.0-21-amd64
(G)UI : Mate 1.24.1
Inscription : 05-07-2020

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

Merci tous !

Par contre le man de rename est en anglais et est assez pauvre en exemple.
Même sur le web c'est léger.

Après avoir bien cherché, je vous partage mon mémo d'explication avec quelques exemples histoire que cela puisse servir.



rename [options] [expression] [remplacement] [fichier]

-n        # pour simuler la commande avant de faire une bourde
-v        # pour afficher le retour dans le terminal si on ne fait vraiment
y         # permet la translittération (permet la transcription lettre par lettre)
s         # substitute - On remplace une chaîne par une autre
/^/      # Les 2 premiers « slash » délimitent la première chaîne. Le 3ème slash pour la deuxième chaîne /^chaine1/chaine2/
^        # Le préfixe, signifie en début de chaîne.
$         # Le suffixe, signifie en fin de chaîne.



# Pour renommer un seul fichier

rename -n 's/toto/bob/' toto.txt
Ex: toto.txt devient bob.txt



# Pour renommer tous les fichiers "toto" en "bob" du répertoire, ajouter l'étoile "*" à la fin

rename -n 's/toto/bob/' *



# Pour remplacer les minuscules en majuscules de fichiers .jpg

rename -n 'y/a-z/A-Z/' *.jpg
Ex: "bob.jpg" devient "BOB.JPG"



# Pour remplacer les 'espaces' par des 'tirets' de fichier .txt
# ici en changeant le vide ' ' par un tiret '-'

rename -n 'y/ /-/' *.txt
Ex: 'fichier de toto.txt' devient 'fichier-de-toto.txt'



# Pour ajouter un underscore après "RA", ce qui donnera "RA_"

rename -n 's/^RA/RA_/' *
Ex: "RA001" devient "RA_001"




# (1) Pour remplacer une partie du nom d’un fichier en début de chaîne.
# ici on modifie le mot "vieux-" par rien.

rename -n 's/^vieux-//' *
Ex: vieux-fichier-du-vieux-toto' devient 'fichier-du-vieux-toto'



# (2) ici ça prendra le terme 'vieux-', peu importe sa place dans la chaîne mais en commençant par le début de la chaîne (si il y en a plusieurs) et une seule fois.

rename -n 's/vieux-//' *
Ex: 'le-vieux-fichier-du-vieux-toto' devient 'le-fichier-du-vieux-toto'



# (3) ici pour remplacer tous les termes 'vieux-' peu importe la quantité dans une chaîne

rename -n 's/vieux-//g' *




# Pour remplacer une parenthèse par un tiret "-". Mettre un antislash devant la parenthèse.
Ici pour la parenthèse qui ouvre "("

rename -n 's/\(/-/' *


Ici pour la parenthèse qui ferme ")"

rename -n 's/\)/-/' *



# Pour remplacer un couple de parenthèse

rename -n 's/\(//;s/\)//' *





Si j'ai mal écrit, dites-le que je corrige

Dernière modification par totoZero7 (22-04-2023 14:15:34)

Hors ligne

#8 04-04-2023 17:51:58

brennux
Adhérent(e)
Lieu : France
Distrib. : Debian-facile 11 (bullseye)
Noyau : 5.10.0-26-amd64
(G)UI : Xfce
Inscription : 21-04-2020

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

Bonjour,
j'ai beaucoup appris, merci !

@totoZero7
dans cet exemple, je n'ai compris le passage de 'bob' à 'super'.  Je suis trop jeune dans le bash pour corriger moi-même les contenus implicites.

rename -n '/toto/bob/' toto.txt
Ex: toto.txt devient super_toto.txt


Aucune idole, vivante, statufiée ou immatérielle.
Xfce, style Numix, icônes Tango

Hors ligne

#9 04-04-2023 18:12:59

totoZero7
Membre
Distrib. : Debian 11.6 Bullseye
Noyau : 5.10.0-21-amd64
(G)UI : Mate 1.24.1
Inscription : 05-07-2020

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

En effet, elle est mauvaise celle-là.

C'est corrigé. Merci brennux

Hors ligne

#10 04-04-2023 21:54:38

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

Une sous-appli de Thunar est appelé "renommer en masse" et elle est franchement chouette pour les gens pas à l'aise en regex.  Elle permet entre autre d'afficher visuellement le résultat de la requête avant de le faire et en temps réel, me gusta.

Dernière modification par otyugh (04-04-2023 21:55:10)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#11 20-04-2023 13:01:04

choops
Membre
Distrib. : Debian sid
(G)UI : XFCE
Inscription : 07-05-2017

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

otyugh a écrit :

Une sous-appli de Thunar est appelé "renommer en masse" et elle est franchement chouette pour les gens pas à l'aise en regex.  Elle permet entre autre d'afficher visuellement le résultat de la requête avant de le faire et en temps réel, me gusta.


Cette sous-appli est également appelée si tu sélectionnes plusieurs éléments d'un dossier dans Thunar et demande un renommage, par menu contextuel en clic-droit ou par pression sur [F2].

Dernière modification par choops (20-04-2023 13:01:27)

Hors ligne

#12 21-04-2023 23:56:30

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

totoZero7 a écrit :

# (3) ici pour remplacer tous les termes 'vieux-' peu importe la quantité dans une chaîne

pas trouvé


Supprime toutes les occurrences de _vieux :


cd /tmp
touch "mon_vieux_(fichier)_vieux"
rename -v 's/_vieux//g' mon*fichier*
 


mon_vieux_(fichier)_vieux renamed as mon_(fichier)



totoZero7 a écrit :

# Pour remplacer un couple de parenthèse

pas trouvé


Supprime un couple de parenthèse :


rename -v 's/\(//;s/\)//' mon*fichier*
 


mon_(fichier) renamed as mon_fichier



Retour à l'état initial :


rm -v mon_fichier
cd $OLDPWD
 


'mon_fichier' supprimé


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#13 22-04-2023 11:59:13

totoZero7
Membre
Distrib. : Debian 11.6 Bullseye
Noyau : 5.10.0-21-amd64
(G)UI : Mate 1.24.1
Inscription : 05-07-2020

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

agp91 a écrit :

rename -v 's/_vieux//g' mon*fichier*


Cela ne fonctionne pas si c'est un tiret du milieu à changer -

rename -v 's/vieux-//g' mon*fichier*



J'ajoute celle des parenthèses qui fonctionne. Merci

Hors ligne

#14 22-04-2023 12:43:21

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

la tu fais la substition de vieux-
qu'est ce qui fonctionne pas?
si ton fichier est mon_vieux-poto
tu auras bien mon_poto, donc la substitution fonctionne bien

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#15 22-04-2023 14:14:18

totoZero7
Membre
Distrib. : Debian 11.6 Bullseye
Noyau : 5.10.0-21-amd64
(G)UI : Mate 1.24.1
Inscription : 05-07-2020

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

erreur de ma part !
j'ai fait un copier coller de la phrase en laissant tel quel la fin "mon*fichier*" au lieu de mettre le nom de mes fichiers...
mes excuses

Hors ligne

#16 01-09-2023 18:30:22

Eoli617
Membre
Distrib. : Debian GNU/Linux 11 (bullseye)
Noyau : 5.10.0-25-amd64
(G)UI : KDE
Inscription : 26-08-2023

Re : [Résolu] Renommer par lot en ajoutant 1 caractère précis

# (1) Pour remplacer une partie du nom d’un fichier en début de chaîne.
# ici on modifie le mot "vieux-" par rien.

rename -n 's/^vieux-//' *
Ex: vieux-fichier-du-vieux-toto' devient 'fichier-du-vieux-toto'



C'est exactement la commande que je cherchais, merci !

Hors ligne

Pied de page des forums