IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script shell pour enlever les caractères spéciaux d'un nom de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Script shell pour enlever les caractères spéciaux d'un nom de fichier
    Bonjour
    Comment je pourrais faire pour parcourir un répertoire et modifier les noms des fichiers qui se trouvent dedans qui comportent des caracères spéciaux en scripting shell.

    Merci

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    par exemple pour remplacer les \ dans les noms par des _:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in ./a_trier/* ; do mv $i $(echo $i | sed -e "s/\\/_/") ; done
    après faut adapter à tes besoins c'est quels caractères que tu veux éliminer ?

    le subsitute multiple devrait aussi marche plustot que d'en faire deux
    avec s/[\\@.é\"]/_/ je suppose

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    en fait j'ai essayé avec les lignes suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    for i in $(ls)
     
    do
    echo $i
    k=`echo $i |sed -e s/[é,è]/e/g -e s/' '/-/g `
    mv $i $k
    done
    Sauf que lorsque j'ai un fichier qui comporte des esapaces, le script le décompose et ne comprend pas que c'est un seul fichier

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    tu devrais peut être essayer avec ${i}
    pour empecher ça ou encore

    echo "${i}" | sed......... ou sinon
    tu remplaces par un _ avant ....et hop plus de soucis...

  5. #5
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Solution évitant les ruptures sur les blancs dans les noms de fichiers


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ls | while read i
    do
       ...
    done
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Maintnant j'ai pu remplacer tous les blanc. Sauf que lorsque je fais mv mon_ancien_qui_comportait_des_espace mon_nouveau_sans_espace j'ai le message suivant:

    mv: la cible `Mon-fichier-de-test' n'est pas un répertoire. l'interpréteur croit que mon_ancien fichier est en fait décomposé en plusieur fichiers donc il ne peut pas le remplacer.

    Comment faire?

  7. #7
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par babo Voir le message
    Maintnant j'ai pu remplacer tous les blanc. Sauf que lorsque je fais mv mon_ancien_qui_comportait_des_espace mon_nouveau_sans_espace j'ai le message suivant:

    mv: la cible `Mon-fichier-de-test' n'est pas un répertoire. l'interpréteur croit que mon_ancien fichier est en fait décomposé en plusieur fichiers donc il ne peut pas le remplacer.

    Comment faire?
    essayes de proteger ta variable contre 'interpretation avec ${variable}

  8. #8
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Tu appliques le conseil de frp31 :

    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    J'ai toujours le même message en faisat ça

  10. #10
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ok là c'est bon
    je n'ai pas fait attention au séparateur"".

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/10/2012, 12h08
  2. Fonction pour éviter les caractères spéciaux
    Par yousra01 dans le forum JDBC
    Réponses: 3
    Dernier message: 14/03/2011, 09h57
  3. Réponses: 0
    Dernier message: 28/12/2008, 22h44
  4. Script shell pour persister les variables exportées
    Par Giovanny Temgoua dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/10/2006, 09h07
  5. [C#][ADO] Enlever les caractère spéciaux
    Par Oberown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/01/2005, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo