まとめて指す:ワイルドカード(グロブ)
ファイルを1つずつ打たなくても、* や ? を使えば「条件に合うものすべて」をまとめて指せる。*.txt は「.txtで終わる全ファイル」、report-?.csv は「?が1文字」。展開するのはシェルなので、どのコマンドでも同じように効く。
ファイルが100個あっても、1つずつ名前を打つ必要はない。「条件に合うものぜんぶ」をまとめて指す記号がワイルドカード(グロブ)だ。
✳ 3つの基本記号
* は「任意の長さの文字列」、? は「任意の1文字」、[ ] は「かっこ内のどれか1文字」を表す。これらを使えば、まとまったファイルを一括で選べる。
▶
例ls *.log(.logで終わる全ファイル) / cp img_?.png backup/(img_1.png〜img_9.pngをコピー) / rm *~(末尾が~のバックアップを掃除)
🧠 展開しているのはシェル
大切なのは、* を解釈しているのはコマンドではなくシェルだという点。シェルが先に * を実際のファイル名の並びに展開し、コマンドはその結果を受け取る。だからどのコマンドでも同じように効く。
⚠
つまずきrm *.txt のように破壊的なコマンドとワイルドカードを組むときは要注意。まず ls *.txt で「何に当たるか」を目で確かめてから実行する。
💡
ポイント*.txt は隠しファイル(.で始まる)には当たらない。隠しも含めたいときは別途 .* を指定する。
この項目に出てくる用語
ワイルドカード(グロブ)わいるどかーど
ファイル名をまとめて指す記号。* は任意の文字列、? は任意の1文字、[ ] は文字集合。
シェルしぇる
コマンドを受け取ってOSに実行させる対話の窓口。bash が代表格。