Есть ли более простой способ записать: wc -l foo?.txt foo??.txt
?
С тех пор в моем случае у меня есть (самое большее) двузначные числа, я пытался использовать спецификацию диапазона wc -l foo[1-99].txt
но это закончило тем, что отобразило только результаты между 1 и 9 (вместо 99). Но это - (нерабочий) взлом, и мне действительно нужно что-то как wc -l foo[?,??].txt
.
Когда у Вас будет два или больше варианта, используйте расширение фигурной скобки :
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
С ударом расширенный шарик (extglob
) синтаксис, можно использовать foo@(?|??)
, например,
wc -l foo@(?|??).txt
extglob
, опция должна быть включена по умолчанию в интерактивной оболочке на текущих релизах Ubuntu, но если не можно включить его с помощью
shopt -s extglob