Contenu | Rechercher | Menus

Annonce

La nouvelle clé USB Ubuntu-fr est en prévente
Rendez-vous sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/01/2019, à 22:08

tymop

[RESOLU] sed supprimer une partie d'une chaine de carractère

Bonsoir,
Je viens vers vous, car je coince avec le renommage de fichiers qui sont sous la forme
"NomFichier-suiteNomFichier-<une suite de caractères inconnue>.mp3"

Je voudrais supprimer ce qu'il y a après le dernier '-' soit : -<une suite de caractères inconnue>, afin d'avoir le nom de fichier suivant: "NomFichier-suiteNomFichier.mp3"

voici ou j'en suis sur ma ligne de commande
for fichiers in *.mp3; do echo $fichiers | sed -e 's/\(.*\)-*.mp3/\1.mp3/'; done

Or, ça ne marche pas vraiment.

Pouvez vous m'aider SVP?

MErci.

Dernière modification par tymop (Le 09/01/2019, à 12:54)

Hors ligne

#2 Le 07/01/2019, à 22:45

pingouinux

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Bonsoir,
Essaye ceci :

for fichiers in *.mp3; do sed -r 's/(.*)-.*/\1.mp3/' <<<"$fichiers"; done

Hors ligne

#3 Le 07/01/2019, à 22:46

jamesbad000

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Bonsoir
Pas loin, mais
-*.  devient -.*\.

sed -e 's/\(.*\)-.*\.mp3/\1.mp3/'

L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#4 Le 07/01/2019, à 23:00

pingouinux

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Un peu plus simple :

for fichiers in *.mp3; do sed -r 's/-[^-]*\././' <<<"$fichiers"; done

Et pour renommer les fichiers :

rename -n 's/-[^-]*\././' *.mp3   # Pour voir l'action de la commande sans rien faire
rename 's/-[^-]*\././' *.mp3      # Pour renommer les fichiers si c'est bon

Hors ligne

#5 Le 08/01/2019, à 03:07

Watael

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

for fichier

sans S : une boucle for itère un élément à la fois. big_smile


eval, c'est mal.

Hors ligne

#6 Le 08/01/2019, à 16:58

MicP

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Bonjour

Simplement avec bash
et sans utiliser la commande sed :

michel@debg53sw:~$ ls -1 *.mp3
nom-fichier-N° 1-après le dernier tiret.mp3
nom-fichier-N° 2-après le dernier tiret.mp3
nom-fichier-N° 3-après le dernier tiret.mp3
nom-fichier-N° 4-après le dernier tiret.mp3

michel@debg53sw:~$ for fichier in *.mp3; do mv "$fichier" "${fichier%-*}.mp3"; done

michel@debg53sw:~$ ls -1 *.mp3
nom-fichier-N° 1.mp3
nom-fichier-N° 2.mp3
nom-fichier-N° 3.mp3
nom-fichier-N° 4.mp3
michel@debg53sw:~$ 

Dernière modification par MicP (Le 09/01/2019, à 16:28)

Hors ligne

#7 Le 08/01/2019, à 17:09

jamesbad000

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Encore plus simple avec la force

tmb-sq_character-yoda_launch_9397c665.jpeg

Dernière modification par jamesbad000 (Le 08/01/2019, à 17:12)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#8 Le 09/01/2019, à 12:54

tymop

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Merci à tous pour votre aide.
Ca a fonctionné impec avec le sed.

Au prochain lot, j'aissaierai la méthode en bash directement. Je ne savais pas que c'était possible.

Hors ligne

#9 Le 09/01/2019, à 16:21

MicP

Re : [RESOLU] sed supprimer une partie d'une chaine de carractère

Pour info :

michel@debg53sw:~$ maVar="un texte avant-texte après le premier-texte après le second"

michel@debg53sw:~$ echo ${maVar%%-*}
un texte avant

michel@debg53sw:~$ echo ${maVar%-*}
un texte avant-texte après le premier

michel@debg53sw:~$ echo ${maVar#*-}
texte après le premier-texte après le second

michel@debg53sw:~$ echo ${maVar##*-}
texte après le second

michel@debg53sw:~$ echo ${maVar/texte/blabla}
un blabla avant-texte après le premier-texte après le second

michel@debg53sw:~$ echo ${maVar//texte/blabla}
un blabla avant-blabla après le premier-blabla après le second

Dernière modification par MicP (Le 09/01/2019, à 16:25)

Hors ligne