我可以使用什么 shell 命令来打开目录中的最后一个字母数字文件?
What shell command might I use to open the last alphanumeric file in a directory?
我有自动生成的日志文件,并组织在这样的目录中:
- logs/laravel-2015-07-01.log
- logs/laravel-2015-07-02.log
- logs/laravel-2015-07-03.log
- logs/laravel-2015-07-04.log
- logs/laravel-2015-07-05.log
我想创建一个 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])
我有自动生成的日志文件,并组织在这样的目录中:
- logs/laravel-2015-07-01.log
- logs/laravel-2015-07-02.log
- logs/laravel-2015-07-03.log
- logs/laravel-2015-07-04.log
- logs/laravel-2015-07-05.log
我想创建一个 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])