Palpite: você tem um alias para ls que está sendo usado quando você tenta o comando interativamente, e esse alias não é usado no script. Algo assim, talvez?
alias ls="ls --full-time"
Note que a sabedoria convencional diz que tentar analisar ls é uma má ideia. Supondo que você esteja em uma máquina Linux, algo assim pode ser preferível:
stat "$FILENAME" | awk '/^Modify: /{print $2}'
EDIT: Ou, como Stéphane aponta abaixo, usar find com -printf é ainda melhor. A saída de stat é um pouco mais fácil de prever do que ls , mas -printf permite um formato de saída totalmente controlado por você.