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 ls
donne.
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.
$LC_COLLATE
).ls
sur le même système.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:
Cependant, un glob utilisant le
*
ne les renverra pas dans cet ordre, à la place vous obtiendrez quelque chose comme: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
-à- direblah_02.txt
, etc.).la source