我可以用什么shell命令打开目录中的最后一个字母数字文件?

时间:2015-07-05 13:14:54

标签: shell command zsh

我有一个自动生成并在目录中组织的日志文件:

  • 日志/ laravel-2015-07-01.log
  • 日志/ laravel-2015-07-02.log
  • 日志/ laravel-2015-07-03.log
  • 日志/ laravel-2015-07-04.log
  • 日志/ laravel-2015-07-05.log

我想创建一个shell别名,打印出最新日志文件的尾部(laravel-2015-07-05.log)。

alias plog="tail ___________________________"

我可以在空白处填写什么来选择最新的日志文件?

每天生成一个新的日志文件,日期字符串模式应该很明显。生成文件的服务器时区与我的本地时区不同,因此我寻找的解决方案将找到具有最新日期的日志文件(不一定只是今天的日期)。 / p>

2 个答案:

答案 0 :(得分:2)

Zsh为此拥有“全球限定词”。在man zshexpn中查找该部分。不需要管道,ls,xargs等。

tail logs/*(.om[1])

这就是寻找:

  • *所有
  • .个文件
  • o下令升序
  • 修改时间
  • m
  • [1]并且只接受最新的

然后您的别名变为:

alias plog='tail logs/*(.om[1])'

或者,如果您更喜欢反过来考虑它(将最后一个视为最新版本,例如tail -1),请使用O(以反转顺序)和[-1](最后一个) :

tail logs/*(.Om[-1])

答案 1 :(得分:1)

假设这些是此目录中的唯一文件,并遵循严格的命名格式

laravel-yyyy-mm-dd

然后可以运行(在日志目录中)

查看上次日志尾

ls | tail -n 1 | xargs tail

这使用ls的默认字母排序顺序

如果要运行外部目录,

可以调整此项:

ls -d logs/* | tail -n 1 | xargs tail