Используя метасимволы, мне нужно выполнить длинный список всех файлов, имя которых содержит строку foo
, за которой следуют две цифры, а затем .txt
. foo**.txt
не получится, очевидно. Я не могу понять, как это сделать.
Как я могу получить длинный список текстовых файлов, содержащих foo с двумя цифрами?
Ответы (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
не могли бы вы немного пояснить, что делает *[!0-9][0-9]. Благодарю за ваш ответ.
- person user2504710; 26.10.2014
Извините, ошибка копирования/вставки. Посмотрите на текущий ответ, должно быть очевидно.
- person Michael Kohl; 26.10.2014
Если это не так: строка
foo
, за которой следует символ в диапазоне от 0 до 9, затем еще один, затем что угодно, затем .txt
.
- person Michael Kohl; 26.10.2014