はじめに
何百枚もの紙が散らばった、散らかった部屋を想像してください。
- 宿題のプリント(
math_hw.txt、english_hw.txt)があります。 - 写真(
pic1.png、pic2.png)があります。 - ごみ(
temp_1、temp_2)もあります。
写真をすべて箱に移したい場合、1 枚ずつ拾う必要はありません。「写真に見えるものをすべて拾って」と指示できます。
Linux では、これを ワイルドカード(グロブとも呼ばれます)で実現します。ワイルドカードは、トランプのジョーカーのように、ほかの文字の代わりになります。
この仕組みを使うと、個々の名前ではなくパターンを指定して操作できます。実際のシステムでは、一致するファイルが数十個、数百個、場合によっては数千個あることもあります。パターンによる選択は、シェルでの作業を大規模に行える理由の一つです。
この実験では、次の 2 つの強力な記号を学びます。
- アスタリスク(
*):任意の長さの文字列を表します。 - 疑問符(
?):1 文字を表します。
複数のファイルを選択する(*)
アスタリスク * は、最もよく知られたワイルドカードです。「0 文字以上の任意の文字列に一致する」ことを意味します。
散らかったフォルダーの中身を確認してみましょう。
ls
このコマンドでファイルを一覧表示できます。ここでは、テキストファイル(.txt で終わるファイル)だけを一覧表示したいとします。
ls notes.txt readme.txt report.txt のようにファイル名を一つずつ入力する代わりに、*.txt と入力します。
これは「.txt で終わるファイルをすべて探す」という意味です。
ls *.txt
出力:
notes.txt readme.txt report.txt
シェルは *.txt を確認し、すべてのテキストファイルに一致するファイル名へ展開しました。その結果、image.png などのファイルは除外されています。これで一覧を絞り込めました。
ここには重要な概念があります。ls コマンドが実行される前に、シェルがパターンを展開します。つまり、ls が受け取るのは、多くの場合、元の *.txt パターンではなく、完成したファイル名の一覧です。これが、ワイルドカードをさまざまなコマンドで使える理由です。
* を使ってファイルを移動する
次は、実際に役立つ操作を行います。data_2025.csv、data_2024.csv、data_old.log という複数のデータファイルがあるとします。
これらを整理するため、data_ で始まるすべてのファイルをバックアップフォルダーへ移動します。
まず、フォルダーを作成します。
mkdir backup
次に、ワイルドカードを使ってファイルを一度に移動します。data_* は、data_ で始まるすべての名前に一致します。
mv data_* backup/
これは Linux に対して、「data_ で始まるファイルはすべてバックアップフォルダーへ移動する」と指示しています。
ここで、ワイルドカードが実際の作業で役立ちます。一致するファイルごとにコマンドを繰り返すのではなく、命名規則を 1 回指定し、シェルに展開させることができます。
現在のディレクトリからファイルがなくなったことを確認します。
ls
続いて、ファイルがバックアップフォルダーに移動したことを確認します。
ls backup
成功です。1 つのコマンドで 3 つのファイルを移動できました。
1 文字を選択する(?)
アスタリスク * は貪欲なワイルドカードで、すべての候補を対象にします。場合によっては、より慎重に選択する必要があります。
疑問符 ? のワイルドカードは、ちょうど 1 文字を表します。
そのため、? は * よりも正確に指定できます。ファイル名の形式が決まっていて、意図せず想定より長い名前まで一致させたくない場合に便利です。
ここには temp_1、temp_2、temp_a という名前のファイルがあります。
temp_*はtemp_1とtemp_very_long_nameの両方に一致します。temp_?は、アンダースコアの後にちょうど 1 文字ある場合にだけ一致します。
削除する前に、まずパターンを確認しましょう(これは常に良い習慣です)。
ls temp_?
一致するファイルは、temp_1、temp_2、temp_a です。
これで問題がないことを確認できたので、ファイルを削除します。
rm temp_?
削除されたことを確認します。
ls
この方法は、特定の命名規則に従うファイルを選択する場合にとても便利です。
このステップの安全な習慣は、覚えておく価値があります。rm や mv でパターンを使う前に、ls のような変更を行わないコマンドでパターンの一致結果を確認してください。パターンマッチングは強力なので、実行する前に対象を確認することが大切です。
まとめ
これで、パターンマッチングの力を使えるようになりました。
*(アスタリスク):「すべてに一致する」ワイルドカードです。種類でファイルを選択する場合(*.png)や、連続した名前のファイルを選択する場合(day_*)に適しています。?(疑問符):「1 文字」を表すワイルドカードです。正確に一致させたい場合(file_?.txt)に適しています。
これでモジュール 2 は終了です。次の操作方法を学びました。
- ファイルツリーを確認して移動する(
pwd、cd、ls)。 - ファイルとフォルダーを作成する(
touch、mkdir)。 - ファイルとフォルダーをコピー・移動する(
cp、mv)。 - ファイルとフォルダーを削除する(
rm、rmdir)。 - ファイルとフォルダーをまとめて選択する(
*、?)。
次のモジュール 3 では、これらのファイルを開き、中のテキストを実際に読み取り、編集します。



