Yanıtlar:
Tüm olası kombinasyonları istiyorsanız, şunu kullanın:
for i in *.[Pp][Nn][Gg]; do
veya
shopt -s nocaseglob
for i in *.png; do
ancak bu, komut dosyanızın tüm kabuk glob'larını (yani joker dosya eşleşmeleri) siz çalışana kadar duyarsız hale getirecektir shopt -u nocaseglob
.
Gerçekten sadece .PNG ve .png (ve örneğin .PnG veya .pnG) istemiyorsanız,
shopt -s nullglob
for i in *.png *.PNG; do
veya
for i in *.png *.PNG; do
[[ -e "$i" ]] || continue
... nullglob veya varlık denetiminin nedeni, yalnızca küçük harfli veya yalnızca büyük harfli uzantılarınız varsa, dosya listesinde benzersiz kalıbı içereceğinden, döngü gövdesinde bir hataya neden olur. Nocaseglob ile olduğu gibi, nullglob kabuk seçeneğini daha sonra kapatmak isteyebilirsiniz (nullglob'a sahip olmak benim deneyimimde, özellikle bir komut dosyasında genellikle iyidir). Aslında, nocaseglob veya böyle bir dosya eşleşmesi için varoluş kontrolünü kullanmanın iyi bir fikir olduğunu düşünürüm, eşleşme olmaması durumunda.
Ayrıca bazı tek astarları da deneyebilirsiniz.
bulmak. -iname "* .png" -exec ....
veya
bulmak. -iname "* .png" | xargs ....
Düzenle
Ayrıca @ Yab'in özyineleme hakkındaki yorumuna da bakınız.
find -maxdepth 1 -iname "*.png"
ls
burada neredeyse işe yaramaz, ancak buradaki kayıt için girişiminize daha yakın bir sözdizimi:
for i in $(ls *.PNG ; ls *.png)
Notlar:
for i in *.{png,PNG}