Как я могу получить длинный список текстовых файлов, содержащих foo с двумя цифрами?

Используя метасимволы, мне нужно выполнить длинный список всех файлов, имя которых содержит строку foo, за которой следуют две цифры, а затем .txt. foo**.txt не получится, очевидно. Я не могу понять, как это сделать.


person user2504710    schedule 26.10.2014    source источник


Ответы (2)


Используйте допустимую подстановку оболочки с классом символов

Чтобы найти свою подстроку в любом месте имени файла, такого как bar-foo12-baz.txt, вам нужен подстановочный знак до и после совпадения. Вы также можете использовать класс символов в своем шаблоне, чтобы соответствовать ограниченному диапазону символов. Например, в Баше:

# Explicit character classes.
ls -l *foo[0-9][0-9]*.txt

# POSIX character classes.
ls -l *foo[[:digit:]][[:digit:]]*.txt

Смотрите также

person Todd A. Jacobs    schedule 26.10.2014

Что-то вроде ls foo[0-9][0-9]*.txt того, что точно соответствует вашему шаблону.

person Michael Kohl    schedule 26.10.2014
comment
не могли бы вы немного пояснить, что делает *[!0-9][0-9]. Благодарю за ваш ответ. - person user2504710; 26.10.2014
comment
Извините, ошибка копирования/вставки. Посмотрите на текущий ответ, должно быть очевидно. - person Michael Kohl; 26.10.2014
comment
Если это не так: строка foo, за которой следует символ в диапазоне от 0 до 9, затем еще один, затем что угодно, затем .txt. - person Michael Kohl; 26.10.2014