2011-10-18 10 views
5

パターンマッチングを使用して、ディレクトリ内で.jpgまたはjpegの拡張子を持つすべてのファイルを検索しようとしています。Bash Pattern Matching

ls *.[jJ][pP][eE][gG] < - これは明らかに.jpegファイル拡張子のみを検出します。問題は、[eEをオプションにするにはどうすればいいですか?

答えて

6

強くマッチします。

ls *.[jJ][pP]{[eE],}[gG] 
+0

本当にありがとうございました。 – Elliot

2

ならびに標準的な(単純な)グロブパターン、bashは≥4.0グロブを拡張しました。
off by defaultです。これを有効にするには、shopt -s extglob

extglobを使用すると、拡張正規表現パターンと標準パターンにアクセスできます。さらに、特定の状況では、デフォルトでオフになっているcase insensitive globを有効にすることで、グロブの振る舞いをさらに調整できます。有効にするには、shopt -s nocaseglob

有効にするextglobは、標準グロブの動作を変更しません。 2つのフォームを混在させることができます。唯一の問題は、特別な拡張正規表現の構文を認識しなければならないことです。例えば、以下の例では、拡張正規表現である唯一の部分は?(e)です。残りは大文字と小文字を区別しない標準的な拡張です。

状況に拡張正規表現、大文字と小文字を区別しないグロブは次のとおりです。Bash Extended Globbing

shopt -s extglob nocaseglob 
ls -l *.jp?(e)g 

は、あなたは、より多くの情報と例を見つけることができます。

+0

実際、Bashはbash-2.02-alpha1で拡張グロブを得ました(つまり、_long_ time ago - 15年のように)。 '。/ configure'が実行されるとき(すなわち、コンパイルの前に)デフォルトでオンかオフかを選択できます。実際に導入されたバージョンは、デフォルト設定で指定したリンクに表示されます。 –