Это не регулярное выражение, и здесь возникает путаница. Вместо этого он использует систему, называемую «глобализация» - см .:
$ man 7 glob
Вместо [az] вам нужно использовать [[: lower:]] как таковой:
$ ls -d [[:lower:]]*
В bash я пробовал
ls [a-z]*
и ожидается, что список всех файлов с именем файла начинается с маленькой буквы алфавита. Но почему файлы с именем начинается с большой буквы алфавита?
>ls [a-z]* D e >
В случае необходимости, версия bash:
bash - версия GNU bash, версия 4.1.5 (1) -релиз (i486-pc-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. Лицензия GPLv3 +: GNU GPL версии 3 или более поздней версии http: // gnu .org / лицензии / gpl.html
This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Это не регулярное выражение, и здесь возникает путаница. Вместо этого он использует систему, называемую «глобализация» - см .:
$ man 7 glob
Вместо [az] вам нужно использовать [[: lower:]] как таковой:
$ ls -d [[:lower:]]*
1) Это может зависеть от вашей операционной системы, а точнее от вашей файловой системы. Ваша файловая система чувствительна к регистру? Вы не упоминаете ОС или тип файловой системы.
2) bash также может выполнять нечувствительную к регистру глобализацию. Вы можете проверить, если это ваш текущий случай сshopt | grep nocaseglob
Кроме того, помните, ls
что с файлами ничего не происходит. Ваша оболочка передает имена файлов в ls.