web-dev-qa-db-fra.com

'echo [A-Z] *' correspond également aux noms de fichiers en minuscule?

Je travaille sur le répertoire racine et souhaite imprimer les entrées de répertoire commençant par une lettre majuscule.

$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm

Le résultat m'embrouille car je ne m'attendais pas à ce que cores dev etc home installer.failurerequests net private sbin tmp usr var vm corresponde à mon modèle.

Comment puis-je écrire un motif glob qui correspond uniquement aux lettres majuscules?

7
Algebra

En effet, le motif globulaire [A-Z] ne correspond généralement pas aux lettres majuscules. Plus précisément, il se développe en fonction de

séquence d'assemblage et jeu de caractères de l'environnement local actuel

Si vous voulez des fichiers commençant par une lettre majuscule, vous pouvez utiliser

echo [[:upper:]]*

ou définir explicitement les paramètres régionaux

(LC_COLLATE=C; echo [A-Z]*)

ou utilisez l'option bash globasciiranges Shell

(shopt -s globasciiranges; echo [A-Z]*)

Voir la section Pattern matching de man bash

14
steeldriver