Shell

如何在每個目錄中獲取最新文件

  • December 1, 2015

是否有 Unix 命令來獲取每個目錄的日誌存檔中的最新文件/app/instance?在下面的範例中,我在 /app/instance: as_aas_bas_c、中有 5 個文件夾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

嘗試類似:

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

循環一個一個地遍歷子目錄,/app/instancetail -n 1保留最後一行ls,按時間排序。我可能沒有您使用的完全相同的ls格式,但這應該接近您正在尋找的格式。

引用自:https://unix.stackexchange.com/questions/246658