パターンマッチングを使用して、ディレクトリ内で.jpgまたはjpegの拡張子を持つすべてのファイルを検索しようとしています。Bash Pattern Matching
ls *.[jJ][pP][eE][gG]
< - これは明らかに.jpegファイル拡張子のみを検出します。問題は、[eE
をオプションにするにはどうすればいいですか?
パターンマッチングを使用して、ディレクトリ内で.jpgまたはjpegの拡張子を持つすべてのファイルを検索しようとしています。Bash Pattern Matching
ls *.[jJ][pP][eE][gG]
< - これは明らかに.jpegファイル拡張子のみを検出します。問題は、[eE
をオプションにするにはどうすればいいですか?
強くマッチします。
ls *.[jJ][pP]{[eE],}[gG]
ならびに標準的な(単純な)グロブパターン、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
は、あなたは、より多くの情報と例を見つけることができます。
実際、Bashはbash-2.02-alpha1で拡張グロブを得ました(つまり、_long_ time ago - 15年のように)。 '。/ configure'が実行されるとき(すなわち、コンパイルの前に)デフォルトでオンかオフかを選択できます。実際に導入されたバージョンは、デフォルト設定で指定したリンクに表示されます。 –
本当にありがとうございました。 – Elliot