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 :

Déplacement d'un dossier dans lui-même


Sujet :

Shell et commandes GNU

  1. #1
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut Déplacement d'un dossier dans lui-même
    Bonjour

    4 fichiers : a, A, t, T
    1 répertoire : pouet
    1 console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ls
    a  A  pouet  t  T
    $ mv [A-Z]* pouet/
    mv: impossible de déplacer 'pouet' vers un sous-répertoire de lui-même, 'pouet/pouet'
    $ ls
    a  pouet
    $ ls pouet
    A  t  T
    $ mv pouet/{A,t,T} .
    $ ls
    a  A  pouet  t  T
    Pourquoi veut-il déplacer le répertoire alors que son nom ne commence pas par une majuscule ?
    Pourquoi cette opération le perturbe tellement que "a" est laissé tranquille alors que "t" est déplacé ?

    Merci de votre attention.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Une moitié de réponse: [A-Z] comprend aussi les minuscules selon ta locale ou le type de FS (par exemple les FS FAT32 ou NTFS).

    Pour l'autre question, je ne pense pas que le mv s'amuse à faire du tri avant le déplacement, il doit prendre les fichiers par ordre d'apparition sur le FS, enfin, je suppose...

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Ben justement, le 'a' (avant 'p') n'est pas pris mais le 't' (après 'p'), oui.
    Donc il change de comportement vis-à-vis des minuscules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ set -x
    $ LC_ALL=C mv [A-Z]* pouet/
    +16:07:05 LC_ALL=C
    +16:07:05 mv -i A pouet t T pouet/
    mv: cannot move 'pouet' to a subdirectory of itself, 'pouet/pouet'
    Il se met à me parler en anglais... il est pas content.

    Je rajoute une troisième question :
    Quelle est la bonne syntaxe pour déplacer les fichiers commençant par une majuscule dans un dossier ?

    FStype: ext4

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    que donne find dans l'ordre d'affichage de tes fichiers ?

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ find
    .
    ./pouet
    ./A
    ./t
    ./a
    ./T

  6. #6
    Invité
    Invité(e)
    Par défaut
    le a est avant le A.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ touch /tmp/{a..z} /tmp/{A..Z}
    $ printf '%s\n' /tmp/[A-Z]
    /tmp/A
    /tmp/b
    /tmp/B
    /tmp/c
    [...]
    /tmp/z
    /tmp/Z

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Bravo ! J'ai tout compris.

    L'ordre réel utilisé est "aAbB....yYzZ".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ls
    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
    $ ls [A-Z]
    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
    b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
    $ ls [a-z]                                                                                                      
    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y
    $
    Combien de scripts excluent "a" ou "Z" sans s'en rendre compte ?
    Ou incluent l'autre casse ?...

    Dans le cas initial, le message d'erreur est celui normal et tous les fichiers sont normalement transférés.

    Citation Envoyé par man bash
    Si l'option d'interpréteur nocaseglob est activée, la correspondance est effectuée sans tenir compte de la casse des caractères alphabétiques. Remarquez que lorsque des expressions d’intervalle comme [a-z] (voir ci-dessous) sont utilisées les lettres de l'autre casse peuvent être incluses, selon le paramétrage de LC_COLLATE.
    Conclusion : rien à voir avec l'ordre ASCII.

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    J'ai appris quelque chose

    Quid des caractères accentués ?

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    En fait non, j'ai pas compris, ça n'explique pas pourquoi ça déplace les A,T,t et pas le a.

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 328
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 328
    Par défaut
    Yop !
    Citation Envoyé par Flodelarab Voir le message
    Bravo ! J'ai tout compris.

    L'ordre réel utilisé est "aAbB....yYzZ".
    C'est normal qu'il manque le 'a' sur la ligne 6, ou c'est une ch'tite erreur de recopie ?

    Nom : manque_a.png
Affichages : 370
Taille : 5,6 Ko

    EDIT :
    nan, y a une embrouille... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # touch /tmp/{a..d} /tmp/{A..D}
    # printf '%s\n' /tmp/[A-D]
    /tmp/A
    /tmp/b
    /tmp/B
    /tmp/c
    /tmp/C
    /tmp/d
    /tmp/D
    # ls /tmp/
    a  b  c  d  
    A  B  C  D
    Le printf ne voit pas le 'a', le ls oui...
    Et en minuscules on a le 'a' mais on perd le 'D' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # printf '%s\n' /tmp/[a-d]
    /tmp/a
    /tmp/A
    /tmp/b
    /tmp/B
    /tmp/c
    /tmp/C
    /tmp/d
    Et d'ailleurs, sur la ligne 9 de Flo je constate qu'il manque le 'Z'...
    Je devrais pas lire vos questions tordues,

  11. #11
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Oui, j'ai compris, le petit a étant avant le grand A, il ne fait pas parti de l'interval [A-Z]...

    Eh ben, l'année 2019 s'annonce bien avec mon "cerf-volant"

  12. #12
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    C'est normal qu'il manque le 'a' sur la ligne 6, ou c'est une ch'tite erreur de recopie ?
    Et justement ... c'est ça qu'il faut comprendre.

    ça n'explique pas pourquoi ça déplace les A,T,t et pas le a.
    C'est un effet de bord. "a" est en dehors de l'étendue "AbBcC...yYzZ", puisque juste avant.
    Pour éviter cet effet, il faut l'option.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ shopt -u nocaseglob
    $ ls [A-Z]
    A  b  B  c  C  d  D  e  E  f  F  g  G  h  H  i  I  j  J  k  K  l  L  m  M  n  N  o  O  p  P  q  Q  r  R  s  S  t  T  u  U  v  V  w  W  x  X  y  Y  z  Z
    $ shopt -s nocaseglob
    $ ls [A-Z]
    a  A  b  B  c  C  d  D  e  E  f  F  g  G  h  H  i  I  j  J  k  K  l  L  m  M  n  N  o  O  p  P  q  Q  r  R  s  S  t  T  u  U  v  V  w  W  x  X  y  Y  z  Z
    $ shopt -u nocaseglob
    $
    [posts croisés]

  13. #13
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 328
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 328
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Pour éviter cet effet, il faut l'option.
    Confirmé avec ma petite étendue (les erreurs y sautent vite aux yeux) :
    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
    16
    17
    18
    19
    # shopt -s nocaseglob
    # printf '%s\n' /tmp/[a-d]
    /tmp/a
    /tmp/A
    /tmp/b
    /tmp/B
    /tmp/c
    /tmp/C
    /tmp/d
    /tmp/D
    # printf '%s\n' /tmp/[A-D]
    /tmp/a
    /tmp/A
    /tmp/b
    /tmp/B
    /tmp/c
    /tmp/C
    /tmp/d
    /tmp/D
    Bon ben tout va bien, on peut se rendormir,

  14. #14
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Autre solution pour ne bouger que ce qui commence par des majuscules en utilisant [A-Z]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ gar=$(shopt -p globasciiranges)
    $ shopt -s globasciiranges
    $ mv -v [A-Z]* pouet/
    'A' -> 'pouet/A'
    'T' -> 'pouet/T'
    $ $gar
    $ shopt -p globasciiranges
    shopt -u globasciiranges

  15. #15
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ > é
    $ > ê
    $ > è
    $ > ç
    $ > à
    $ > ï
    $ > Î
    $ > ♀
    $ ls
    ♀  a  A  à  b  B  c  C  ç  d  D  e  E  é  è  ê  f  F  g  G  h  H  i  I  Î  ï  j  J  k  K  l  L  m  M  n  N  o  O  p  P  q  Q  r  R  s  S  t  T  u  U  v  V  w  W  x  X  y  Y  z  Z
    $ ls [A-Z]
    A  à  b  B  c  C  ç  d  D  e  E  é  è  ê  f  F  g  G  h  H  i  I  Î  ï  j  J  k  K  l  L  m  M  n  N  o  O  p  P  q  Q  r  R  s  S  t  T  u  U  v  V  w  W  x  X  y  Y  z  Z
    Le "a" minuscule est exclu mais l'accent le réintègre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ls i*
    i
    $ ls [i]*
    i
    $ ls [=i=]*
    i
    $ ls [i-I]*
    i  I
    $ ls [i-j]*
    i  I  Î  ï  j
    Dodo.

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

Discussions similaires

  1. [SFML 2.0] Dessiner un objet dans lui même ?
    Par Vidou12 dans le forum SFML
    Réponses: 10
    Dernier message: 30/06/2016, 17h23
  2. [Débutant] Récupérer la taille des fichiers/dossiers dans une même variable
    Par Bylliboy dans le forum VB.NET
    Réponses: 11
    Dernier message: 18/06/2014, 13h50
  3. [Batch] Soucis pour lister le fichier de sortie dans lui-même
    Par Olivier Regnier dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 22/01/2013, 00h31
  4. Lire l'étiquette d'un Xcontrol dans lui-même
    Par Gazawik dans le forum LabVIEW
    Réponses: 0
    Dernier message: 23/04/2009, 10h49
  5. XMLSchema -> un élement dans lui même
    Par _root dans le forum Valider
    Réponses: 2
    Dernier message: 09/06/2008, 23h48

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