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

Linux Discussion :

Supprimer / remplacer des caracteres dans un nom de fichier


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut Supprimer / remplacer des caracteres dans un nom de fichier
    Bonsoir à tous,

    je cherche un moyen de remplacer les espaces dans un nom de fichier musical .ogg

    en fait, lors de la conversion du fichier .cda je me retrouve avec un nom très long composé d'espace et de lettres accentuées !!

    je voudrais remplacer 'espace par '_' et 'è' et 'é' par 'e' ...

    quand il y a un ou deux fichier ça va, mais sur la totalité d'un CD c'est long à remplacer ...

    je ne connais pas les fonctions du type "sed" ou "grep", peut-on faire ça avec ce type de fonctions ??

    merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 71
    Points
    71
    Par défaut
    cat fichier | sed -s 's/ /\_/g' > fichier2
    etc ....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    ok merci je vais tester ...

    j'avais trouvé un truc de ce style ( à develloper)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    j=`echo $file | sed 's/ /_/'`
    ce qui remplace les ' ' par '_' mais seulement sur le premier espace !!

    je cherche, je cherche ....

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    pas tres orthodoxe mais j'ai pas mieux pour le moment !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    k=`echo $file | sed 's/ /_/'`
    k=`echo $k    | sed 's/ /_/'`
    k=`echo $k    | sed 's/ /_/'`
    k=`echo $k    | sed 's/ /_/'`
    k=`echo $k    | sed 's/ /_/'`
    echo $k
    ca remplace un max d'espace dans le nom du fichier mais je ne suis pas sûr de ne pas en oublier !

    un boucle for ... mais est-ce bien 'Unix' ??

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut remplacer caracteres dans nom de fichier ...
    et comme ça ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    # remplace tous les espaces (10) par le souligné
    k=$file
    for ((i=0;i<=9;i++)); do
    k=`echo $k | sed -s 's/ /_/'`
    done
     
    # extrait le nom du fichier
    FICH=`basename ${k} .mp3`
    echo $FICH
    cela permet déjà de recuperer le nom du fichier seul sous la forme


    mon_nom_de_fichier_qui_est_tres_long
    si qq à mieux je suis preneur

    merci de votre contribution

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $filename |sed -e s/[é,è]/e/g -e s/' '/-/g

  7. #7
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    pour ramplacer des caractères par d'autres il vaut mieux (enfin c'est fait pour) utiliser 'tr'

    echo $filename | tr "éèêëîïûüà " "eeeeiiuua_"

  8. #8
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    salut,
    Citation Envoyé par quadra38
    ce qui remplace les ' ' par '_' mais seulement sur le premier espace !!
    je crois bien que c'est l'option g qui permet d'appliquer la "transformation" autant de fois que nécessaire

    cf l'exemple de mollux

  9. #9
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    sed -e s/[é,è]/e/g -e s/' '/-/

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    Super

    je vais essayer ça, en fait ne connais pas du tout Unix et ses dérivés et ces fonctions me sont inconnues. J'avais vu "sed" mais je ne savais pas l'utiliser !

    echo $filename |sed -e s/[é,è]/e/g -e s/' '/-/g


    Merci à tous

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    narmataru

    k=`echo $k | tr "éèêëïîüûùàç " "eeeeiiuuuac_" `
    merci, j'ai essayé la fonction "tr" mais celle-ci renvoie pas forcément le bon caractere !!

    de plus elle ajoute un caractere avant celui à remplacer
    et je ne sais pas pourquoi ?

    je suis passé par un script comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    k=`echo $k | sed -s 's/ /_/g'`
    k=`echo $k | sed -s 's/[é,è,ê,ë]/e/g'`
    k=`echo $k | sed -s 's/[à]/a/g'`
    k=`echo $k | sed -s 's/[î,ï]/i/g'`
    k=`echo $k | sed -s 's/[û,ü,ù]/u/g'`
    k=`echo $k | sed -s 's/[ç]/c/g'`
    qui me donne satisfaction mais est lourd !?

  12. #12
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Voici le code de Narmartaru légèrement modifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    root@info1:~ # k="  éèêëïîüûùàç"
    root@info1:~ # echo "$k"
      éèêëïîüûùàç
    root@info1:~ # k=`echo "$k" | tr éèêëïîüûùàç[:blank:]  eeeeiiuuuac_ `
    root@info1:~ # echo "$k"
    __eeeeiiuuuac
    à noter que les guillemets autour de $k sont importants.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut pourquoi tant de haine ??
    j'ai essayé en mode console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [root@fedora ~]# k=" éè"
    [root@fedora ~]# echo "$k"
     éè
    [root@fedora ~]# k=`echo "$k" | tr éè[:blank:] ee_`
    [root@fedora ~]# echo "$k"
    __e__
    [root@fedora ~]#

    comprends pas ??

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # remplace tous les caracteres non désirés
    k=$file
    k=`echo "$k" | tr "éèêëïîüûùàç[:blank:]" "eeeeiiuuuac_" `
     
    FICH=`basename ${k} .mp3`
    echo remplace $file en $FICH
    et le resultat :

    remplace mp3/La rivière de notre enfance.mp3 en La_rivi_ere_de_notre_enfance
    remplace mp3/Prière indienne.mp3 en Pri_ere_indienne
    remplace mp3/The Happiest day of our lives.mp3 en The_Happiest_day_of_our_lives
    qq chose m'echappe

  15. #15
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut Re: pourquoi tant de haine ??
    Citation Envoyé par quadra38
    j'ai essayé en mode console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [root@fedora ~]# k=" éè"
    [root@fedora ~]# echo "$k"
     éè
    [root@fedora ~]# k=`echo "$k" | tr éè[:blank:] ee_`
    [root@fedora ~]# echo "$k"
    __e__
    [root@fedora ~]#

    comprends pas ??
    voici la sortie que j'ai :
    yves@debian:~$ k=" éè"
    yves@debian:~$ echo "$k"
    éè
    yves@debian:~$ echo "-- $k --"
    -- éè --
    yves@debian:~$ k=`echo "$k" | tr éè[:blank:] ee_`
    yves@debian:~$ echo "-- $k --"
    -- _ee --
    donc chez moi ça marche bien....

  16. #16
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par quadra38
    voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # remplace tous les caracteres non désirés
    k=$file
    k=`echo "$k" | tr "éèêëïîüûùàç[:blank:]" "eeeeiiuuuac_" `
     
    FICH=`basename ${k} .mp3`
    echo remplace $file en $FICH
    peut être en enlevant les guillemets autour de l'ensemble des lettres à remplacer.

    Tu n'as pas recopié le script que j'ai donné: tu as mélangé un ancien avec un nouveau...

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 62
    Points
    62
    Par défaut
    désolé ggnore

    je ne vois pas de quel script tu parles ?

    j'ai essayé en enlevant les ""

    il y a peut-etre un bug sur le logiciel 'tr' que je possède (c'est possible ça ?)


    j'ai contourné le pb et fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    k=$file
    k=`echo $k | sed -s 's/ /_/g'`
    k=`echo $k | sed -s 's/[é,è,ê,ë]/e/g'`
    k=`echo $k | sed -s 's/[à]/a/g'`
    k=`echo $k | sed -s 's/[î,ï]/i/g'`
    k=`echo $k | sed -s 's/[û,ü,ù]/u/g'`
    k=`echo $k | sed -s 's/[ç]/c/g'`
    k=`echo $k | tr [:upper:] [:lower:]   `
    k=`echo $k | tr [\'] [_]  `
     
    # extrait le nom du fichier
    FICH=`basename ${k} .mp3`
     
    mv "$file" "$DIR$FICH$MP3"
    je supprime meme l'appostrophe et mets tout ça en minuscule et ça fonctionne ...

    merci à tous

  18. #18
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par ggnore
    Voici le code de Narmartaru légèrement modifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    root@info1:~ # k="  éèêëïîüûùàç"
    root@info1:~ # echo "$k"
      éèêëïîüûùàç
    root@info1:~ # k=`echo "$k" | tr éèêëïîüûùàç[:blank:]  eeeeiiuuuac_ `
    root@info1:~ # echo "$k"
    __eeeeiiuuuac
    à noter que les guillemets autour de $k sont importants.
    ceci fonctionne chez moi ...

    Si tu préfères ta solution, et/ou que tu juges que c'est bon, n'oublie pas de cliquer sur résolu.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/02/2008, 12h15
  2. Changer des caractères dans les noms de fichiers
    Par ForgetTheNorm dans le forum Linux
    Réponses: 2
    Dernier message: 07/01/2008, 14h26
  3. remplacer des caracteres dans un textbox
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2007, 14h26
  4. support des espaces dans les noms de fichiers
    Par menuge dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2006, 09h02
  5. suppression des espaces dans les noms de fichiers
    Par menuge dans le forum Général Python
    Réponses: 8
    Dernier message: 22/10/2006, 12h01

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