如何获取每个目录中的最新文件

如何获取每个目录中的最新文件

是否有一个Unix命令可以获取每个目录的logarchive中的最新文件/app/instance?在下面的示例中,我有 5 个文件夹 /app/instanceas_a, as_b, as_c, aunznaeu并且我需要获取weekend.log每个存档文件夹中的最新文件。

文件:

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

预期输出:

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

答案1

尝试类似的方法:

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

/app/instance该循环逐一遍历 的子目录,并tail -n 1仅保留 中的最后一行ls,该行按时间排序。我可能没有ls与您使用的完全相同的格式,但这应该接近您正在寻找的格式。

相关内容