Что подстановочный знак указывает один или два символа?

Есть ли более простой способ записать: wc -l foo?.txt foo??.txt ?

С тех пор в моем случае у меня есть (самое большее) двузначные числа, я пытался использовать спецификацию диапазона wc -l foo[1-99].txt но это закончило тем, что отобразило только результаты между 1 и 9 (вместо 99). Но это - (нерабочий) взлом, и мне действительно нужно что-то как wc -l foo[?,??].txt.

7
задан 3 August 2016 в 13:13

2 ответа

Когда у Вас будет два или больше варианта, используйте расширение фигурной скобки :

foo{?,??}.txt

Или, чтобы быть более конкретным:

foo{[0-9],[0-9][0-9]}.txt

Пример

Позволяют нам рассмотреть каталог с этими тремя файлами:

$ ls foo*txt
foo111.txt  foo11.txt  foo1.txt

Наблюдайте:

$ echo foo{?,??}.txt
foo1.txt foo11.txt

И:

$ echo foo{[0-9],[0-9][0-9]}.txt
foo1.txt foo11.txt

Или, более кратко:

$ echo foo{,[0-9]}[0-9].txt
foo1.txt foo111.txt
6
ответ дан 23 November 2019 в 06:26

С ударом расширенный шарик (extglob) синтаксис, можно использовать foo@(?|??), например,

wc -l foo@(?|??).txt

extglob, опция должна быть включена по умолчанию в интерактивной оболочке на текущих релизах Ubuntu, но если не можно включить его с помощью

shopt -s extglob
4
ответ дан 23 November 2019 в 06:26

Другие вопросы по тегам:

Похожие вопросы: