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 :

renommer du majuscule en minuscule


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut renommer du majuscule en minuscule
    j'ai des fichiers de ce type
    ECP0721.JPG
    j'essaie de renommer en petit caractere comme ceci
    ecp0721.jpg avec ce code
    for i in $rep/*; do [ -f $i ] && mv -i $i `echo $i | tr [.*\.JPG] [.*\.jpg]`;done
    ou ce code
    for i in echo `pwd`/*; do [ -f $i ] && mv -i $i `echo $i | tr [A-Z] [a-z]`; done
    mais aucun ne marche
    j'ai oublié un truc ou quoi.
    merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 540
    Points : 19 361
    Points
    19 361
    Par défaut
    cas 1 : tr n'accepte pas cette forme
    cas 2 : dans le meilleur du pire des cas ce serait for f in $(echo $(pwd))/*

    ceci fonctionne en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in ${rep:-.}/*.JPG; do [ -f "$f" ] && mv "$f" "$(tr [A-Z] [a-z] <<<"$f")"; done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ for i in * ; do  mv $i `echo $i | tr '[A-Z]' '[a-z]'`  ; done    
    $ ls -l
    total 0
    -rw-r--r--  1 francois  users  0 Jul 12 20:00 toti
    -rw-r--r--  1 francois  users  0 Jul 12 20:00 toto
    -rw-r--r--  1 francois  users  0 Jul 12 20:00 tutu
    $
    néanmoins cette méthode est à proscrire pour une raison extrêmement simple :

    TOTO est converti en toto
    mais plus loin le fichier
    ToTo sera lui aussi a son tour réécrit toto

    et donc tu perds des fichiers !!!!!!!


    bref c'est une méthode définitivement interdit par principe
    si il existe un cas ou il est vraiment indispensable de traiter ce cas une solution est d'adjoindre à un nom de fichier son propre n°d'INODE et la date complete YYYYMMJJHHMMSS ce qui garanti un n° unique et donc un nom unique

    genre TOto devient toto20100712204052338570 et TOTO toto20100712204052338569
    par exemple

    ou au lieu d'utiliser ça on peut utiliser aussi les MD5 des fichier dans les noms de fichiers tjrs pour garantir l'unicité absolue du nom de fichier...

    démonstration du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ touch TOto
    $ touch TOTO
    $ for i in * ; do  mv $i `echo $i | tr '[A-Z]' '[a-z]'`  ; done 
    $ ls -l
    total 0
    -rw-r--r--  1 francois  users  0 Jul 12 20:11 toto
    $
    démonstration de la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $ rm *
    $ echo toto > toto
    $ echo titi > Toto
    $ ls
    Toto toto
    $ for i in * ; do  mv $i `echo $i | tr '[A-Z]' '[a-z]'`$(ls -li $i|awk '{print$1}')  ; done
    $ ls -l
    total 8
    -rw-r--r--  1 francois  users  5 Jul 12 20:12 toto2338569
    -rw-r--r--  1 francois  users  5 Jul 12 20:12 toto2338570
    $ cd .. && rm -rf toto ; unset i

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    dans le repertoire , si j'ai les fichiers en minuscules , ca m'affiche ce message .
    et comme 90% de mes images sont en minuscules et comme j'ai plus de 10000 images , j'ai l'impression que ca tourne dans le vide .Je ne sais pas s'il y a une solution que pour traiter les fichiers en majuscule et pas afficher ces massages pour les fichiers en minuscule
    mv: `./162256.jpg' et `./162256.jpg' identifient le même fichier.
    mv: `./162257.jpg' et `./162257.jpg' identifient le même fichier.
    mv: `./162258.jpg' et `./162258.jpg' identifient le même fichier.
    mv: `./162259.jpg' et `./162259.jpg' identifient le même fichier.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    j'ai trouvé la solution .
    d'abords déplacer les fichiers en majuscule vers un repertoire temp
    lancer le shell pour mettre en minuscule
    et retransferer les fichiers
    voilà
    merci quand meme

  6. #6
    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 bigs3232 Voir le message
    j'ai trouvé la solution .
    d'abords déplacer les fichiers en majuscule vers un repertoire temp
    lancer le shell pour mettre en minuscule
    et retransferer les fichiers
    voilà
    merci quand meme
    c'est une mauvaise solution car elle contourne le probleme au lieu de le corriger.

    la solution est de ne traiter QUE les fichier contenant au moins 1 majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in *[A-Z]* ; do  mv $i `echo $i | tr '[A-Z]' '[a-z]'`$(ls -li $i|awk '{print$1}')  ; done



  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    merci
    j'ai testé ta méthode mais ca ne marche pas
    for i in ./rep/*[A-Z]* ; do mv $i `echo $i | tr '[A-Z]' '[a-z]'`$(ls -li $i|awk '{print$1}') ; done

  8. #8
    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 bigs3232 Voir le message
    merci
    j'ai testé ta méthode mais ca ne marche pas
    comme démontré plus haut sur les copies écran, si.
    si tu n'arrives pas à l'utiliser c'est surement un problème de syntaxe genre tu as mis un espace ou il faut pas, tu confonds '` et " peut être

    que tu sois en ksh, bash ou pdksh la syntaxe est celle indiquée.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    désolé j'ai testé tes 2 syntaxes mais voici ce que j'ai comme erreur
    ls: avant.jpg: Aucun fichier ou répertoire de ce type
    mv: la cible `avant.jpg' n'est pas un répertoire
    ls: option invalide -- .
    Pour en savoir davantage, faites: « ls --help ».
    mv: option invalide -- s
    Pour en savoir davantage, faites: « mv --help ».

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 540
    Points : 19 361
    Points
    19 361
    Par défaut
    essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in ~/*([[:upper:]])*.@(jpg|JPG); do [ -f "$i" ] && mv "$i" "$(echo "$i" | tr '[A-Z]' '[a-z]')-$(stat -c%i "$i")" ; done
    ...

    pour être plus complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for i in ~/*([[:upper:]])*.@(jpg|JPG)
    do if [ -f "$i" ] 
       then neo="$(echo "$i" | tr '[A-Z]' '[a-z]')"
            if [ -f "$neo" ]
            then mv "$i" "$neo-$(stat -c%i "$i")"
            else mv "$i" "$neo"
            fi
       fi
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2007, 13h22
  2. problème majuscule et minuscule
    Par rdams dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/10/2005, 15h45
  3. Réponses: 3
    Dernier message: 08/08/2005, 12h24
  4. Différence entre majuscule et minuscule dans une requête
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2004, 15h42
  5. [RICHEDIT] -> Majuscule et Minuscule ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 13h33

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