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)