繁体   English   中英

bash脚本-从文件夹中选择的文件中打印X行

[英]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
  • 获取正确的文件
  • 按数字排序
  • 获取上一个日志文件
  • 获取最后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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM