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

What shell command might I use to open the last alphanumeric file in a directory?

我有自动生成的日志文件,并组织在这样的目录中:

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

alias plog="tail ___________________________"

我可以在 select 最新的日志文件中填写什么?

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

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

laravel-yyyy-mm-dd

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

查看最后一条日志尾部

ls | tail -n 1 | xargs tail

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

如果目录外可以调整这个 运行 :

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

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])