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.