1.02.2標準
report1.csv、report7.csv、reportA.csv、report10.csvがある。
reportの直後が数字1文字だけの.csvを選ぶ。
適切なパターンはどれか。
× 不正解
[0-9]は指定範囲内の1文字に一致するため、数字がちょうど1文字の名前だけを選べる。
詳細解説
誤り
report?.csv任意の1文字なのでreportA.csvも含む。
誤り。?はreportA.csvにも一致するため、数字だけという条件を満たさない。
正しい
report[0-9].csv角括弧の範囲が数字1文字だけに一致する。
正しい。[0-9]は0から9の範囲にある1文字だけを受け入れる。
誤り
report[!0-9].csv数字以外の1文字に一致するため条件が逆である。
誤り。!は集合を否定するため、数字ではないreportA.csvを選ぶ逆の条件になる。
誤り
report*.csv任意長に一致し、report10.csvや文字を含む名前も対象になる。
誤り。*はreport10.csvの2文字にも一致し、文字種と長さを限定できない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); touch "$tmp/report1.csv" "$tmp/report7.csv" "$tmp/reportA.csv" "$tmp/report10.csv"; (cd "$tmp" && printf '%s\n' report[0-9].csv); rm -rf "$tmp"期待される結果
report1.csv
report7.csv理解のポイント
- []は1文字集合
- 0-9は数字範囲
- !は集合の否定
確認時の注意
- 確認環境: Bash 5.x / 一時ディレクトリ
基礎のおさらい
角括弧式
列挙した文字または範囲のいずれか1文字へ一致する。
ロケール
範囲式の解釈はロケールの影響を受ける場合があるが、0-9は数字名の意図を明確に示せる。
問題IDKL-101-399
確認環境Bash 5.x / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告