wc -l foo?.txt foo??.txt
を記述する簡単な方法はありますか?
私の場合、(最大で)2桁の数字があるので、範囲指定wc -l foo[1-99].txt
を使用しようとしましたが、これは1から9(99ではなく)の結果のみを表示することになりました。しかし、これは(機能しない)ハックであり、wc -l foo[?,??].txt
のようなものが本当に必要です。
2つ以上の選択肢がある場合は、ブレース展開を使用します。
foo{?,??}.txt
または、より具体的に:
foo{[0-9],[0-9][0-9]}.txt
次の3つのファイルがあるディレクトリを考えてみましょう。
$ 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
Bashの拡張グロブ(extglob
)構文では、foo@(?|??)
を使用できます。
wc -l foo@(?|??).txt
extglob
オプションは、現在のUbuntuリリースの対話型シェルでデフォルトで有効になっている必要がありますが、そうでない場合は、
shopt -s extglob