[英]bash script - print X rows from a seleccted file from a folder
我正在尝试编写一个脚本,以帮助跟踪我的应用程序的日志。
我的应用程序的日志以以下模式写入“ 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行。
请帮我....
谢谢...
find /var/log/MyLogs -iname '*_xxx.txt' | sort -n | tail -1 | xargs tail -20
tail -20 $(ls -1 /var/log/MyLogs/*_*.txt | sort -n -t _ -k 1 -r | head -1)
ls -1 [0-9]*_XXX.txt | sort -rn | head -1 | xargs tail -20
在shell脚本中使用ls
通常是不好的做法,但是如果可以确保日志文件中不包含空格和其他奇怪字符,则可以使用以下简单方法:
tail -20 $(ls -t1 /var/log/[0-9]*_XXX.txt | head -1)
该:
ls -t
对我的修改时间最新的文件进行排序 head
第一 tail
打印最后几行 同样,这通常是一种不好的做法,只有在知道自己在做什么时才能使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.