Не только с ls
. ls
вообще не знает о шаблонах. Он может использоваться только с глобализацией (подстановочные знаки *
и ?
или расширенное глобирование - см. extglob
на странице руководства Bash), предлагаемой оболочкой, но не с регулярными выражениями.
Простой способ - использовать find
для этой работы (обратите внимание, что регулярное выражение должно соответствовать всему имени файла):
find . -regex '<yourpattern>'
Для подсчета результатов направьте трубку к wc
:
# safe for corner case: version of find w/o newline escaping and files with newlines:
find . -regex '<yourpattern>' -printf '.' | wc -c
# fallback for non-GNU platform, corner cases not addressed:
find . -regex '<yourpattern>' | wc -l
Найдите -regex
на странице справки find
для получения дополнительной информации.