指定一两个字符的通配符是什么?

Mat*_*ath 7 command-line bash wildcards

有没有写一个简单的方法: wc -l foo?.txt foo??.txt

由于在我的情况下我有(最多)两位数字,我尝试使用范围规范,wc -l foo[1-99].txt但这最终只显示了 1 到 9(而不是 99)之间的结果。但这是一个(非工作)黑客,我真的需要像wc -l foo[?,??].txt.

Joh*_*024 6

当您有两个或更多选择时,请使用大括号扩展

foo{?,??}.txt
Run Code Online (Sandbox Code Playgroud)

或者,更具体地说:

foo{[0-9],[0-9][0-9]}.txt
Run Code Online (Sandbox Code Playgroud)

例子

让我们考虑一个包含这三个文件的目录:

$ ls foo*txt
foo111.txt  foo11.txt  foo1.txt
Run Code Online (Sandbox Code Playgroud)

观察:

$ echo foo{?,??}.txt
foo1.txt foo11.txt
Run Code Online (Sandbox Code Playgroud)

和:

$ echo foo{[0-9],[0-9][0-9]}.txt
foo1.txt foo11.txt
Run Code Online (Sandbox Code Playgroud)

或者,更简洁地说:

$ echo foo{,[0-9]}[0-9].txt
foo1.txt foo111.txt
Run Code Online (Sandbox Code Playgroud)