我有几个不同时间戳的日志文件。我想用时间戳和最后几行来回显文件名(参见示例)。
我如何参考日期和时间以及文件名?
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
答案 0 :(得分:1)
ls -l
的输出意味着人类可读,而不适合脚本。
来自我的机器的示例:
$ ls -l /
total 22
-rw-r--r--. 1 root root 0 Nov 7 17:41 1
lrwxrwxrwx. 1 root root 7 Feb 4 2016 bin -> usr/bin
dr-xr-xr-x. 6 root root 1024 Dec 27 11:20 boot
# ...
正如您所看到的,去年修改的项目是年份而不是时间。当然,您可以添加更多选项来解决这个问题,例如使用--time-style=+%Y-%m-%d %H:%M:%S %4Z"
可以获得2017-03-16 17:31:12 EET
。一旦你投入足够的选项使输出有点可靠,你就可以开始解析它,这取决于文件也可以证明更复杂。
也就是说,除非您因某种原因而遇到ls
和for
循环,否则最好使用find
,这在查找和显示文件方面做得非常好目录及其详细信息,以及在它们上运行命令。
find /somePath/log.out* -printf "Date: %TY-%Tm-%Td - Time: %TT - File: %f\n" -exec tail -n5 {} \;
或者更好
find /somePath/ -maxdepth 1 -name "log.out*" -type f -printf "Date: %TY-%Tm-%Td - Time: %TT - File: %f\n" -exec tail -n5 {} \;
检查man find
以获取有关其选项以及如何进一步格式化输出的更多详细信息(例如日期和时间格式)。
还有一点需要注意:在Linux中通常没有创建日期/时间这样的东西。这些文件存储了上次修改,更改和访问的时间(如果为文件系统启用)。以上命令使用修改时间。