比较 awk 中的时间
我想检查一个目录下所有文件的修改时间。如果任何文件的时间与当前系统时间不同,则会打印红色。否则,打印 GREEN。
ls -lrt| grep main | awk '{if ($8 != `date +%R` ) print "-->RED"}END{print"-->GREEN"}'
您可以建议我如何纠正上述说法。万分感谢。
I want to check the modified time of all the files in one directory. If any file has the time different from the current system time, then RED will be printed. Otherwise , GREEN is printed.
ls -lrt| grep main | awk '{if ($8 != `date +%R` ) print "-->RED"}END{print"-->GREEN"}'
May you suggest me how to correct the above statement. Million thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不解析
ls
的输出。您可以使用stat
执行您想要的操作。stat -c%Y file
将输出自 1970 年 1 月 1 日以来文件的修改时间(以秒为单位)。date +%s
将输出自 1 月 1 日以来的当前时间(以秒为单位) ,1970。所以,你想要的可以通过以下方式完成:
如果你想要上面的文件列表,并在任何时间不同时输出
RED
:如果你不使用 bash,那么你可以将
[[
]]
对替换为[
和]
,以及$(...)与
Don't parse the output of
ls
. You can do what you want withstat
.stat -c%Y file
will output the modification time of a file in seconds since Jan 1, 1970.date +%s
will output the current time in seconds since Jan 1, 1970.So, what you want can be done by:
If you want the above for a list of files, and output
RED
if any time is different:If you're not using bash, then you can replace
[[
]]
pair with[
and]
, and$(...)
with这是您可以使用 shell 和 date 命令执行此操作的一种方法,
请注意,您必须根据自己的需要进行调整,因为您可能只想仅比较日期或仅比较时间等。无论是什么,请检查手册页各种日期格式的日期。
如果你想用 awk 来做,这里有一个纯 awk(+GNU date) 解决方案
this is one way you can do it with shell and date command
note that you will have to adjust to your own needs, since you may just want to compare date only, or time only, etc.. whatever it is, check the man page of date for various date formats.
If you want to do it with awk, here's a pure awk(+GNU date) solution