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

时间:2014-08-22 06:25:38

标签: linux bash

我正在尝试编写一个脚本,以帮助跟踪我的应用程序的日志。

我的应用程序的日志使用以下模式写入“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行

请帮帮我....

...谢谢

4 个答案:

答案 0 :(得分:1)

find /var/log/MyLogs -iname '*_xxx.txt' | sort -n | tail -1 | xargs tail -20
  • 获取正确的文件
  • 按数字排序
  • 获取上一个日志文件
  • 获取最后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打印最后一行

再次,这通常是一种不好的做法,只有当你知道自己在做什么时才能使用它。