Assumindo que sua entrada é pequena, e os nomes dos arquivos não contêm espaços ou outros caracteres estranhos, você pode usar apenas ls .
ls -dt $(cat files)
$(cat files) coloca o conteúdo de files na linha de comando e os divide no espaço em branco para obter uma lista de argumentos. ls -t pega uma lista de arquivos como seus argumentos, classifica-os por mtime e os imprime. -d é necessário para listar os diretórios usando seu nome, em vez de seu conteúdo.
Se isso não for suficiente, você pode experimentar o padrão de decoração / classificação / undecorate , por exemplo
$ while IFS=$'\n' read file; do
printf '%d %s\n' "$(stat -c +%Y "$file")" "$file"
done <files | sort -k1nr | cut -f 2- -d ' ' >files.sorted
onde IFS=$'\n' read file; do ... done <files define file para cada entrada delimitada por nova linha em files , printf...stat... transforma <filename> em <mtime> <filename> , sort -k1nr classifica as linhas com base no primeiro campo em ordem numérica inversa , em seguida, cut remove o <mtime> , deixando você com apenas <filename> s na ordem classificada.