Como a classificação falha se a lista de arquivos é muito grande, aqui está outra solução:
ls -lRU --time-style=long-iso "$PWD"/* | awk 'BEGIN {\
cont=0; newd=20000101; \
} { \
gsub(/-/,"",$6); if (substr($0,0,1)=="/") \
{ \
pat=substr($0,0,length($0)-1)"/"; $6="" \
}; \
if( $6 ~ /^[0-9]+$/) { \
if ( $6 > newd ) { \
newd=$6; \
newf=$8; \
for(i=9; i<=NF; i++) { \
newf=newf $i; \
} \
newf=pat newf; \
}; \
count++; \
} \
} END { \
print "newest date: ", newd, "\nFile:", newf, "\nTotal compared: ", count \
}'
Basta colar no bash.
Eu peguei este código da resposta do @Br-Beco em Como posso encontrar o arquivo mais antigo em uma árvore de diretórios
e modifiquei o código para mostrar o arquivo NEWEST.
Para explicação, siga o link.
Se você quer um one-liner, retire o \ + newline e você terá
ls -lRU --time-style=long-iso "$PWD"/* | awk 'BEGIN { cont=0; newd=20000101;} {gsub(/-/,"",$6); if (substr($0,0,1)=="/"){pat=substr($0,0,length($0)-1)"/"; $6=""};if( $6 ~ /^[0-9]+$/) {if ( $6 > newd ) {newd=$6;newf=$8;for(i=9; i<=NF; i++) {newf=newf $i;}newf=pat newf;};count++;}} END {print "newest date: ", newd, "\nFile:", newf, "\nTotal compared: ", count}'
Ainda não encontrei uma maneira de mostrar apenas as datas do FILE, não as DIRs. Tentei
ls --classify |grep -v /$
que deve simplesmente remover todos os dirs da saída ls. mas isso de alguma forma quebrou o código.