В сценарии удара, как я могу сказать 'для всех файлов типа .png или.PNG'?
Я пробую:
for i in (`ls *.PNG` && `ls *.png`)
но получение синтаксической ошибки.
Если Вы хотите все возможные комбинации, используйте:
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 или проверку существования на все соответствия файла как это, на всякий случай нет никаких соответствий.
Вы могли также попробовать некоторую остроту такой как
найти.-iname "*.png" - должностное лицо....
или
найти.-iname "*.png" | xargs....
Править
См. также комментарий @Yab ниже о рекурсии.
ls
почти бесполезно здесь, но для записи вот синтаксис ближе к Вашей попытке:
for i in $(ls *.PNG ; ls *.png)
Примечания: