como obter o arquivo mais recente em cada diretório

0

Existe um comando Unix para obter o arquivo mais recente em logsarchive de cada dir de /app/instance ? No exemplo abaixo, eu tenho 5 pastas em /app/instance : as_a , as_b , as_c , aunz , naeu e eu preciso obtenha o arquivo weekend.log mais recente em cada pasta de arquivo.

Arquivo:

18790 Nov 15 13:48 /app/instance/as_a/logsarchive/log_20151115_134850/weekend.log
24533 Nov 15 14:20 /app/instance/aunz/logsarchive/log_20151115_141952/weekend.log
69906 Nov 21 08:30 /app/instance/naeu/logsarchive/log_20151121_083000/weekend.log
37923 Nov 21 11:10 /app/instance/as_a/logsarchive/log_20151121_111000/weekend.log
30830 Nov 21 11:15 /app/instance/as_b/logsarchive/log_20151121_111500/weekend.log
16186 Nov 21 11:20 /app/instance/as_c/logsarchive/log_20151121_112000/weekend.log
36365 Nov 21 11:25 /app/instance/as_c/logsarchive/log_20151121_112500/weekend.log
28407 Nov 22 01:23 /app/instance/as_b/logsarchive/log_20151122_012247/weekend.log
28407 Nov 22 10:14 /app/instance/aunz/logsarchive/log_20151122_101339/weekend.log
50945 Nov 28 08:30 /app/instance/naeu/logsarchive/log_20151128_083000/weekend.log
32704 Nov 28 11:10 /app/instance/as_a/logsarchive/log_20151128_111000/weekend.log
30931 Nov 28 11:15 /app/instance/as_b/logsarchive/log_20151128_111500/weekend.log
16186 Nov 28 11:20 /app/instance/as_c/logsarchive/log_20151128_112000/weekend.log
31297 Nov 28 11:25 /app/instance/aunz/logsarchive/log_20151128_112500/weekend.log
24533 Nov 29 10:10 /app/instance/aunz/logsarchive/log_20151129_101033/weekend.log

Resultado esperado:

32704 Nov 28 11:10 /app/instance/as_a/logsarchive/log_20151128_111000/weekend.log
30931 Nov 28 11:15 /app/instance/as_b/logsarchive/log_20151128_111500/weekend.log
16186 Nov 28 11:20 /app/instance/as_c/logsarchive/log_20151128_112000/weekend.log
50945 Nov 28 08:30 /app/instance/naeu/logsarchive/log_20151128_083000/weekend.log
24533 Nov 29 10:10 /app/instance/aunz/logsarchive/log_20151129_101033/weekend.log
    
por cris 01.12.2015 / 18:54

1 resposta

2

Tente algo como:

for dir in /app/instance/*; do
    ls -lcrt "$dir/logsarchive"/*/weekend.log | tail -n 1
done

O loop percorre os subdiretórios de /app/instance one por um, e tail -n 1 mantém apenas a última linha de ls , que é ordenada pelo tempo. Eu posso não ter exatamente o mesmo formato ls que você usado, mas isso deve estar perto do que você está procurando.

    
por 01.12.2015 / 19:31