我正在尝试编写一个脚本,以帮助跟踪我的应用程序的日志。
我的应用程序的日志使用以下模式写入“var / log / MyLogs /”:
runningNumber_XXX.txt , for example:
0_XXX.txt
37_xxx.txt
99_xxx.txt
101_xxx.txt
103_xxx.txt
我正在尝试编写一个bash脚本(暂时没有成功),它将打印最后一个日志文件的最后20行(最后一个日志文件是具有最大前缀号的文件)。
我知道我需要检查文件夹中的文件(对于/ var / log / MyLogs / *中的文件)并检查哪个文件名具有最大的前缀,然后从所选文件中打印最后20行
请帮帮我....
...谢谢
答案 0 :(得分:1)
find /var/log/MyLogs -iname '*_xxx.txt' | sort -n | tail -1 | xargs tail -20
答案 1 :(得分:1)
tail -20 $(ls -1 /var/log/MyLogs/*_*.txt | sort -n -t _ -k 1 -r | head -1)
答案 2 :(得分:0)
ls -1 [0-9]*_XXX.txt | sort -rn | head -1 | xargs tail -20
答案 3 :(得分:0)
通常是在shell脚本中使用ls
的不良做法,但是如果你能确保日志文件不包含空格和其他奇怪的字符,你可以使用一个简单的:
tail -20 $(ls -t1 /var/log/[0-9]*_XXX.txt | head -1)
在:
ls -t
对我最近修改时间的文件进行排序head
第一个tail
打印最后一行再次,这通常是一种不好的做法,只有当你知道自己在做什么时才能使用它。