Est-ce que bash * correspond aux fichiers dans l'ordre alphanumérique?


25

Je veux concaténer un tas de fichiers ensemble dans l'ordre des noms de fichiers.

Est-il sûr de supposer que cela me les donnera dans l'ordre alphanumérique?

cat * 

c'est à dire le même ordre qui lsdonne.

Réponses:


26

Réponse courte: oui.

Depuis la page de manuel de bash :

Après le fractionnement des mots, à moins que l'option -f n'ait été définie (voir The Set Builtin), Bash recherche dans chaque mot les caractères '*', '?' Et '['. Si l'un de ces caractères apparaît, le mot est considéré comme un modèle et remplacé par une liste alphabétique de noms de fichiers correspondant au modèle.


6
Notez que "alphabétique" varie en fonction des paramètres régionaux (en particulier $LC_COLLATE).
grawity

4
@grawity true, mais il en résulterait la même sortie que lssur le même système.
BloodPhilia

8

La réponse courte est oui, mais vous devez être conscient de ce que devrait être l'ordre alphanumérique, car il peut ne pas correspondre à l'ordre naturel que vous avez en tête.

Par exemple, exécutez un test sur la façon dont les majuscules et les minuscules sont traitées pour trouver sur votre système, ainsi que des séquences de nombres.

Un problème courant que j'ai rencontré lors de la commande des listes de fichiers retournés par un glob est les fichiers numérotés. On me donne souvent des fichiers numérotés comme:

blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt

Cependant, un glob utilisant le *ne les renverra pas dans cet ordre, à la place vous obtiendrez quelque chose comme:

blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...

Donc - pour éviter ce problème, vous devrez soit faire quelques manipulations sur la liste de fichiers retournée, soit renommer les fichiers afin que les chiffres simples aient un zéro (c'est blah_01.txt-à- dire blah_02.txt, etc.).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.