Renommage via script shell

Résolu/Fermé
Signaler
Messages postés
15
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2009
-
Messages postés
15
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2009
-
Bonjour,
Bonjour.

Je récupère toutes les nuits dans un répertoire une série de fichiers nommés ainsi :

NC3858510_A1628717_gl20090914.not

NC3879755_A1643326_Sylvain_Bo.not

NC3774201_A1569573_15_07_2009.not

et je souhaite les débarrasser de tout ce qui précède le second _ pour obtenir donc ;

gl20090914.not
Sylvain_Bo.not
15_07_2009.not

J'ai pensé à un script shell utilisant sed mais comment dire... Je débute ;-)

Help welcome.

5 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 891
Salut,

 ssh$ ls -1
NC3774201_A1569573_15_07_2009.not
NC3858510_A1628717_gl20090914.not
NC3879755_A1643326_Sylvain_Bo.not

 ssh$ while read line;do mv "${line}" $(sed 's/[^_]*_[^_]*_//' <<<${line});done < <(ls)

 ssh$ ls -1
15_07_2009.not
gl20090914.not
Sylvain_Bo.not

 ssh$
;-))
Messages postés
15
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2009

Enorme ! Merci mille fois
Messages postés
15
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2009

je sais j'abuse mais la même rentrée dans un script provoque une erreur syntax error near unexpected token '>'


#! /bin/sh
while read line;do mv "${line}" $(sed 's/[^_]*_[^_]*_//' <<<${line});done < <(ls)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 891
Alors écris-le comme suit :

#! /bin/sh

for line in *
do
mv "${line}" $(sed 's/[^_]*_[^_]*_//' <<<${line})
done

:-))
Messages postés
15
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2009

Alors là, chapeau bas....

JE te bénis ;-)

Merci.
D.