Есть ли способ использовать [символы]
, например [: upper:]
, как если бы они были подстановочным знаком? например, допустим, у меня есть каталог со следующими файлами:
AAA
AA
aaa
aa
BBB
BB
bbb
bb
теперь скажем, что я хочу ls
все файлы, которые начинаются как минимум с двух строчных букв. Вместо ls [[: lower]] [[: lower:]] *
есть более эффективный способ сделать это, который, по сути, будет "подстановочный номер [[: lower: ]]
, а затем подстановочный знак? "
А как насчет того, чтобы начать не только с двух строчных букв, но и с ТОЛЬКО двух строчных букв, а не * строчных букв. (т.е. ?
вместо *
)? спасибо
Вы могли использовать расширенный globbing:
Если
extglob
опция оболочки включена с помощьюshopt
встроенный, несколько расширенных операторов сопоставления с образцом распознаны. В следующем описании список шаблона является списком одного или нескольких шаблонов, разделенных‘|
’. Составные шаблоны могут быть сформированы с помощью одного или нескольких следующих подшаблонов:? (список шаблона)
Нуль соответствий или одно возникновение данных шаблонов.* (список шаблона)
Нуль соответствий или больше случаев данных шаблонов.+ (список шаблона)
Соответствия одни или несколько случаев данных шаблонов.(Список шаблона)
Соответствия один из данных шаблонов.! (список шаблона)
Соответствия что-либо кроме одного из данных шаблонов.
Что касается того, что Вы спросили, я не могу понять этого:
... все файлы, которые запускают с ПО КРАЙНЕЙ МЕРЕ двух строчных букв... "подстановочное количество [[: ниже:]] и затем подстановочный знак?"
Подстановочный знак соответствует нулю или больше, который не является тем же как два или больше. Любое количество [[:lower:]]
s может соответствовать расширенному шарику *([[:lower:]])
. "По крайней мере двум" не нужен расширенный globbing вообще: [[:lower:]][[:lower:]]*
.
... запуск с ТОЛЬКО 2 строчных букв, не * строчные буквы
[[:lower:]][[:lower:]]?([^[:lower:]]*)
Который является двумя символами нижнего регистра, дополнительно сопровождаемыми (что-либо кроме символа нижнего регистра и чего-либо).