Я работаю с корневым каталогом и хочу вывести записи каталога, начинающиеся с заглавной буквы.
$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm
Результат меня сбил с толку, так как я не ожидал,
cores dev etc home installer.failurerequests net private sbin tmp usr var vm
что он будет соответствовать моему образцу.
Как написать шаблон, который соответствует только заглавным буквам?
решение1
Это потому, что шаблон glob [A-Z]
в целом не соответствует заглавным буквам. В частности, он расширяется в соответствии с
последовательность сортировки и набор символов текущей локали
Если вам нужны файлы, начинающиеся с заглавной буквы, вы можете использовать
echo [[:upper:]]*
или явно указать локаль
(LC_COLLATE=C; echo [A-Z]*)
globasciiranges
или используйте опцию оболочки bash
(shopt -s globasciiranges; echo [A-Z]*)
Смотрите Pattern matching
разделman bash