Se o seu find
tiver printf
, imprima o mtime em segundos, seguido do nome do arquivo, use sort
e, finalmente, cut
:
find . -type f -printf "%T@\t%f\n" |
sort -k 1n -k 2 |
cut -f 2-
O resultado encontra TIMESTAMP FILENAME em cada linha. O tipo primeiro classifica os registros de data e hora em ordem numérica. Se os timestamps forem iguais, ele usará o nome do arquivo como último recurso. O corte remove o registro de data e hora da saída.
EDIT: Sua solução perl funciona, mas eu faria diferente. Aqui está o mais simples:
find . -type f -print |
perl -lne 'print (((stat($_))[9]."\t".$_)' |
sort -k 1n -k 2 |
cut -f 2-
Não há necessidade de converter o tempo em uma string e vice-versa. Apenas imprima o mtime do stat como um valor numérico como o find teria feito.