Você pode fazer isso com zsh :
zmodload zsh/stat
prefixmtime () {
sortstring=${(l:6::0:)${REPLY%%.*}}$(zstat -F '%s' +mtime -- $REPLY)
REPLY=${sortstring}
}
print -rl -- *(o+prefixmtime)
Substitua print -rl pelo seu comando se estiver satisfeito com o resultado
Como funciona:
Os globs irão classificar aqui (via o+function ) com base no que a função prefixmtime retorna, ou seja, sortstring , que é uma string obtida pela concatenação do prefixo numérico de cada nome de arquivo ${REPLY%%.*} left- preenchidos com zeros (l:6::0:) (supondo que os prefixos tenham até 6 caracteres) e os mtime em segundos (obtidos por meio de zstat module). Pode ser mais fácil entender como funciona se você executar:
{ for f (*)
printf '%s %s\n' ${(l:6::0:)${f%%.*}}$(zstat -F '%s' +mtime -- $f) $f
} | sort -k1,1n
Note que o acima assume que você está no mesmo diretório com seus arquivos, caso contrário você terá que definir a string de classificação nessa função como
sortstring=${(l:6::0:)${${REPLY##*/}%%.*}}$(zstat -F '%s' +mtime -- $REPLY)
e, em seguida, você pode usar caminhos de diretório, por exemplo,
print -rl some/place/else/*(o+prefixmtime)