Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 12h26   #1
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut shell manipulation chaînes de caractères

Bonjour à tous,

Je bute sur un problème de manipulation de noms de fichiers : j'ai des noms de fichier du genre 1119 toto.truc, 2342 toto.truc etc. et je voudrais extraire les chiffres en début de nom de fichier pour les balancer à la fin juste avant l'extension (comme 1119 toto.truc qui deviendrait toto 1119.truc).
Je précise que la chaine au début est toujours de la même longueur.
Je farfouille dans sed et awk mais je sèche.
Des idées ?
Merci
zatoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h48   #2
Membre confirmé
 
Avatar de fransoo
 
frans
Inscription : novembre 2009
Messages : 197
Détails du profil
Informations personnelles :
Nom : frans

Informations forums :
Inscription : novembre 2009
Messages : 197
Points : 231
Points : 231
L'extension est-elle toujopurs la même ?
Y a-t-il systématiquement un espace après les chiffres ?

Les substitutions bash devraient faire l'affaire
Code :
1
2
3
4
5
6
for F in * # Pour tous les fichiers du dossier courant
do
    E=${F##*.} # extrait l'extension
    B="${F%.*}"  # nom sans extension
    mv "$F" "${B:4} ${B::4}.$E"
done
Si l'extension est toujours la même, pas besoin de l'extraire.
fransoo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/01/2012, 13h52   #3
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Merci de ta réponse, je vais tester illico
Sinon, c'est toujours la même extension et l'espace après les chiffres aussi.
zatoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h59   #4
Membre confirmé
 
Avatar de fransoo
 
frans
Inscription : novembre 2009
Messages : 197
Détails du profil
Informations personnelles :
Nom : frans

Informations forums :
Inscription : novembre 2009
Messages : 197
Points : 231
Points : 231
Alors ça donne
Code :
1
2
3
4
5
for F in *.truc # Pour tous les fichiers du dossier courant
do
    B="${F%.*}"  # nom sans extension
    mv "$F" "${B:4} ${B::4}.truc"
done
J'ai oublié, si c'est toujours "toto", alors :
Code :
1
2
3
4
for F in *.truc # Pour tous les fichiers du dossier courant
do
    mv "$F" "toto ${F::4}.truc"
done
fransoo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/01/2012, 14h12   #5
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Code :
1
2
3
4
5
6
for F in * # Pour tous les fichiers du dossier courant
do
    E=${F##*.} # extrait l'extension
    B="${F%.*}"  # nom sans extension
    mv "$F" "${B:6} ${B::6}.$E"
done
Merci encore, ça fonctionne parfaitement
zatoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h41.


 
 
 
 
Partenaires

Hébergement Web