回答:
可能なすべての組み合わせが必要な場合は、次を使用します。
for i in *.[Pp][Nn][Gg]; do
または
shopt -s nocaseglob
for i in *.png; do
ただし、スクリプトを実行するまで、スクリプトのすべてのシェルグロブ(ワイルドカードファイルの一致)の大文字と小文字を区別しませんshopt -u nocaseglob
。
本当に.PNGと.pngだけが必要な場合(たとえば、.PnGや.pnGは不要)、次のいずれかを使用します。
shopt -s nullglob
for i in *.png *.PNG; do
または
for i in *.png *.PNG; do
[[ -e "$i" ]] || continue
... nullglobまたは存在チェックの理由は、小文字のみまたは大文字のみの拡張子がある場合、ファイルのリストに一致しないパターンが含まれるため、ループの本文でエラーが発生するためです。nocaseglobの場合と同様に、後でnullglobシェルオプションをオフにしたい場合があります(ただし、私の経験では、nullglobをオンにしておくと、特にスクリプトで有効な場合がよくあります)。実際、このようなすべてのファイルの一致に対してnocaseglobまたは存在チェックのいずれかを使用することをお勧めします。一致がない場合に備えて。
for i in *.{png,PNG}