回答:
数字に一致する標準のファイル名グロビングパターンは[0-9]
です。これは1桁に一致します。
cat file[0-9].txt
これらのうち2つだけを選択するには:
cat file[25].txt
9より大きい数値の場合、ブレース展開が役立ちます(ただし、グロビングパターンとブレース展開の違いについては、下記の注を参照してください)。
cat file{25..60}.txt
繰り返しますが、ブレースの展開では、個々の数値も使用できます。
cat file{12,45,900,xyz}.txt
(上記の例では、ブレース展開は算術ループを含まず、指定された文字列に基づいて名前を生成するだけであることに注意してください)。
ではbash
、extglob
シェルオプションを有効(shopt -s extglob
)にすると、次も機能します。
cat file@(12|45|490|foo).txt
@(...)
パターンが含まれてのいずれか一致する|
-delimitedパターン。
展開パターンとしての[...]
and @(...)
と中括弧の展開の違いは、中括弧の展開がコマンドラインで生成され、現在のディレクトリ内の既存の名前と実際には一致しない可能性があることです。ファイル名のグロビングパターンは名前に一致しますが、可能な名前がすべて存在しない場合でも、シェルは文句を言いません。場合全く一致する名前が存在しない場合を除き、また、パターンは、膨張していないこと残るnullglob
シェルオプションが設定されている場合にパターンを除去し、。
例:
touch file1
ls file[0-9]
ここでは、のファイルリストのみfile1
が表示されます。
見つからない文句を言うだろう、などls file{0..9}
ls
file0
file2
次の例では、最初のコマンドは指定されたパターンに一致する既存の名前のみを操作し、2行目はまだ存在しないファイルを作成します。
touch file[0-9]
touch file{0..9}
{1,2}
もPOSIXに準拠していません...今日、いくつかの新しいことを学びました!
grep
、に渡すURLを生成したりする場合などに非常に役立ちますが、curl
混乱を招く可能性もあります。グロブの操作に慣れている人に。
使用する構文はfile{1,2}
、file1
およびに評価される構文file2
です。
$ ls
$ touch file{1,2,3,4,5,6,7,8,9}
$ ls
file1 file2 file3 file4 file5 file6 file7 file8 file9
Inianが以下でも指摘しているようにtouch file{1..9}
、この例の場合は簡単に実行できます...
$ ls
$ touch file{1..9}
$ ls
file1 file2 file3 file4 file5 file6 file7 file8 file9
次のような複数の式を使用することもできます。
$ ls
$ touch file{1..9}{a..z}
$ ls
file1a file1b file1c
[...]
file9x file9y file9z
はい、上記は234(9
回26
)のファイルを作成します。
file{1,2}
構文はまた、ファイル名を変更すると便利です:mv some_very_long_filename.txt{,.bak}
はい、bash
シェルでブレース展開を使用できます。いくつかのファイルについてはfile{1..2}
、ちょうどまたは同じようにfile{1,2}
または、場合によってはファイルが存在しないことが心配な場合は、単純なループを実行します。
for file in file{1..4}.txt; do
[ -f "$file" ] || continue
echo "$file" # Do other actions on file here
done
または、単に連結することがファイルに対する唯一の操作であり、どの時点でも存在しなかった可能性があるファイルがわからない場合は、cat
それらだけを使用してエラーを抑制します。標準エラーを/dev/null
にリダイレクトすると、ファイルが利用できない場合にエラーが抑制されます。
cat file{1,5}.txt 2>/dev/null
またはfile[15]
、ファイルが見つからなかった場合にエラーについて文句を言わないglob式を使用します。
cat file[15].txt
file{1,5}
カンマ構文だけで欠けていました。
file45.txt
。ブラケット表現[...]
は正規表現と同じように機能しますが、「ない」と言う!
代わりに使用し^
ます。[...]
パターンは常に単一の文字にマッチします。