ワイルドカード(別名メタ文字)は、同様の名前のファイルのヒープから特定のファイル名を検索する場合の天の恵みです。たとえば、Linuxでワイルドカードを使用すると、 lsを使用できます。 コマンド、 rm 定義された基準に一致する限り、複数のファイルに対するコマンド、またはその他のLinuxコマンド。
この記事では、Linuxでワイルドカードを使用してワークフローを合理化し、生産性を高める方法について説明します。ただし、最初に、Linuxで最も強力で一般的に使用されるワイルドカードを簡単に見てみましょう。
- アスタリスク(*) :(*) ワイルドカードは、任意の数の不明な文字を表します。これは、ドキュメントやファイルを検索するときに便利ですが、名前の一部しか覚えていません。
- 疑問符(?) :(?) ワイルドカードは、不明な文字を1つだけ表します。これは、同じような名前のファイルのリストがあり、数文字がわからない場合に便利です。
- 括弧で囲まれた文字([]) :([]) ワイルドカード(1番目の角かっこではなく3番目の角かっこ)は、角かっこ内で定義された文字の出現箇所と一致するために使用されます。このオプションは、後で説明するように、大文字と小文字のファイルを処理するときに便利です。
さて、これまでワイルドカードを扱ったことがなければ、この情報のすべてが意味をなさないことに気づきました。ただし、混乱を解消するために、ワイルドカードの機能を正しく理解して自分で使い始めることができるように、10の例を含む詳細なガイドをまとめました。
ワイルドカードを使用したファイル名の照合の例
まず、前に説明したさまざまなワイルドカードをすべて使用して、それらを使用してファイル名を照合する方法を見てみましょう。これを行うために、次のファイルセットを使用します。
- このコマンドは、文字 Mで始まるすべてのファイル名と一致します そして、任意の文字の1つ以上の出現で終わります。
$ ls -l M*
出力:
大文字の「M」で始まるファイルにのみ一致し、小文字の「m」には一致しないことに注意してください。
2.このコマンドは、 My-Dataで始まるすべてのファイル名をコピーします そして、任意の文字の1つまたは複数の出現で終了します。
$ ls My-Data*
出力:
3.このコマンドは、文字 Mで始まるすべてのファイルに一致します 、文字 Nで終わる 、および間に任意の1文字があります。
$ ls M?N.sh
出力:
4.このコマンドは、文字 Mで始まるすべてのファイルに一致します 、文字 Nで終わる 、ただし、間に1文字しかない場合は、角かっこで定義された文字のリストに属します [AEIOU] 。
$ ls M[AEIOU]N.sh
出力:
ファイル名に一致するように異なるワイルドカードを組み合わせる4つの例
これで、効果を高めるために、これらのワイルドカードを組み合わせて連携させ、ファイル名の一致をより効果的に行うことができます。
- これは、任意の3文字(文字なしを含む)とそれに続くケーキを含むファイル名を見つけるのに役立つコマンドです。 そして、任意の文字の1つ以上の出現で終わります。
$ ls ???cake*
出力:
2.これは、角かっこで囲まれたこれらの文字のいずれかで始まるすべてのファイル名に一致するコマンドです [MNLOP] そして、任意の文字の1つ以上の出現で終わります。
[MNLOP]を置き換えるとどうなるか見てみましょう [mnlop]を使用 。
したがって、使用するコマンドは次のとおりです。
$ ls [MNLOP]*
$ ls [mnlop]*
出力:
ご覧のとおり、結果に影響を与えるため、角かっこワイルドカードに入力する文字の大文字と小文字に注意する必要があります。
3.これは、すべてのファイル名をこれらの文字のいずれかと一致させるコマンドです [MNLOP] 最初の文字として、これらの文字のいずれか [AEIOU] 2番目としてNが続きます 、そして最後に任意の文字の1つ以上の出現で終了します。
$ ls [MNLOP][AEIOU]N*
出力:
(*)に注目してください ワイルドカードは、ファイル名のすべての拡張子を見つけるのに役立つだけです。4。
これは、 Mにつながる任意の文字が1つ以上出現することで始まるすべてのファイル名に一致するコマンドです。 、その後に任意の1文字、その後に N 、その後、任意の文字の1つ以上の出現で終了します。
$ ls *M?N*
出力:
ワイルドカードを使用した文字セットの照合
これで、ワイルドカードがどのように機能するかを実際に理解できるはずです。これで、ワイルドカードが非常に重要ないくつかの高度なユースケースに焦点を当てることができます。
たとえば、ブラケットワイルドカード [-]を使用して文字の範囲を定義できます すべての文字を入力する代わりに。これは、文字のセットを指定し、文字が表示される場所に基づいてファイル名を一致させる場合に非常に役立ちます。
これを行うには、画像に示すように、次のファイルのセットを使用します。
ご覧のとおり、作成した画像は、さまざまなポケモンデータを含むファイルのリストです。
ここで、pokemon-で始まるすべてのファイル名を検索します 続いて数字、次に任意の英数字、その後に数字、そして最後に任意の文字が1つ以上出現する場合は、次のコマンドを使用できます。
$ls pokemon-[0-9][0-9a-zA-Z][0-9]*
出力:
パーツ[0-9] 0の間の任意の数字を表します 〜 9 。
次のパート[0-9a-zA-Z] 0の間の任意の数の文字を表します 〜 9 、または aの間の小文字 z、へ またはAの間の大文字 Zへ 。
そのため、 [0-9a-zA-Z]に切り替えると [0-9a-z]を使用 、結果には、指定された位置に大文字が含まれるファイル名が含まれていないことがわかります。
$ls pokemon-[0-9][0-9a-z][0-9]*
出力:
ワイルドカードを使用して一連の文字を無効にする
文字のセットを指定できるのと同様に、ファイル名の照合中に文字のセットを無効にすることもできます。これがその方法の例です:
$ls pokemon-[0-9][!a-z][0-9]*
出力:
これは、pokemon-で始まるすべてのファイル名と一致します 続いて任意の数字、次に小文字以外の任意の文字、続いて任意の数字、最後に任意の文字の1つ以上のオカレンスで終了します。
[!a-z]を使用して、 すべての小文字のセットを否定しています。これで、ファイル名は小文字以外のすべての文字と一致します。
まとめ
これで、Linuxワイルドカードとその使用方法についての簡単な説明は終わりです。すべてをまとめると、一言で言えば、アスタリスク(*) ワイルドカードは、ファイル名はわかっているが拡張子はわかっていない場合に最も役立ちます。 疑問符(?) ワイルドカードは、ファイル名の文字をいくつか忘れた場合に役立ちます。 ブラケット([]) ワイルドカードは、定義された文字のセット内に検索を含める場合に役立ちます。