1. 概要

bashでファイルを操作する場合、ファイル名と一致させるためにワイルドカード文字を使用することがよくあります。 Bashはこれらの文字を解釈し、ファイル名の展開を実行します。これは、グロビングとも呼ばれるプロセスです。

このチュートリアルでは、ワイルドカード文字とその使用法を説明するいくつかの例を提供することにより、グロビングの概念を紹介します。

グロブは正規表現に似ているように見えるかもしれませんが、根本的に異なることに注意してください。

2. 任意の文字列に一致

多くの場合、lsと一緒にグロビングを使用します。 ファイルシステムに、さまざまな種類のファイルを含むフォルダーがあると仮定します。 ここで、すべてのテキストファイルのリストを取得する場合は、このフォルダーに cd して、次の操作を実行できます。

$ ls *.txt

グロビングでは、*またはアスタリスク文字は任意の長さの任意の文字列を表します。 上記のコマンドの出力は次のようになります。

test-2.txt test-3.txt test.txt

3. 単一の文字のマッチング

* は任意の長さの文字列と一致しますが、を使用すると、正確に1つの文字と一致できます。 たとえば、単一の疑問符を使用して、‘test-‘という名前のすべてのテキストファイルとそれに続く1桁の数字を一覧表示できます。

$ ls test-?.txt
test-2.txt test-3.txt

または、正確に4文字の名前を持つすべてのテキストファイルを一覧表示することもできます。

$ ls ????.txt
test.txt

4. 文字の範囲を一致させる

* またはを使用して任意の文字を一致させる方法を見ました。 私たちが探しているものについてもう少し情報があるとしましょう。 たとえば、ファイル名にいくつかの番号が含まれているファイルにのみ関心があることがわかっている場合があります。 そこで、範囲が登場します。

範囲は角括弧内で宣言されます。 たとえば、すべての数字の範囲は次のように表されます。

[0-9]

このパターンをアスタリスクとともに使用して、名前に番号が含まれるすべてのファイルを検索します。

$ ls *[0-9]*
1234.dat    test-2.txt  test-3.txt  test-99.txt

範囲は、数字だけでなく文字にも適用できます。

  • [az]=アルファベットのすべての小文字
  • [AZ]=アルファベットのすべての大文字
  • [a-zA-Z] =大文字と小文字に関係なく、アルファベットのすべての文字
  • [jp]=小文字j k l m n [X91X ]、oまたはp
  • [a-z3-6]=小文字または数字3 4 5または6

5. 隠しファイル

デフォルトでは、非表示のファイルとフォルダーはlsの出力に表示されません。 非表示のファイルとフォルダーにグロビングを適用するには、先頭にを明示的に追加する必要があります。 (ドット)。

例えば:

$ ls *

私たちのホームディレクトリでは、次のようになります。

file.txt

一方:

$ ls .*

表示される可能性があります:

.bashrc

6. 結論

この記事では、グロビングとも呼ばれるファイル名拡張のプロセスを紹介しました。 * の文字を適用して、それぞれ0個以上の文字または正確に1つの文字に一致させる方法を学びました。 また、角かっこを使用して範囲を指定することにより、より高度なグロビングを実行する方法も学びました。

パターンは似ているように見えますが、globbingは正規表現を使用しないことを覚えておく必要があります。