O problema não é com stat
, mas com os dados de origem em seu for
loop; porque você incluiu tudo entre aspas, torna-se uma única entidade longa.
Para corrigir isso, remova as aspas ao redor:
for files in $(find /media/*/$devices -iname "*.jpg");
Funciona desde que nenhum dos arquivos ou caminhos possuam espaços. Mas há uma solução mais elegante que funciona com espaços e até mesmo com nomes de arquivos estranhos (por exemplo, aqueles que incluem citações ou novas linhas):
while IFS= read -r -d '' file; do
# operations on each "$file" here
done < <(find /media/*/$devices -type f -iname *.jpg -print0)