查找+打印带有时间戳的文件

查找+打印带有时间戳的文件

以下查找语法将打印 10 天前的文件

find  /var/log/ambari-metrics-collector  -type f -mtime +10 -regex '.*\.log.*[0-9]$' -print
/var/log/ambari-metrics-collector/collector-gc.log-201808130951
/var/log/ambari-metrics-collector/collector-gc.log-201808130403
/var/log/ambari-metrics-collector/gc.log-201808011229
/var/log/ambari-metrics-collector/collector-gc.log-201808011229
/var/log/ambari-metrics-collector/gc.log-201808091332

需要添加到我的语法中才能打印以下示例,以便时间戳将位于文件路径之前

2018 Aug 28 14:20   /var/log/ambari-metrics-collector/collector-gc.log-201808130951
2018 Aug 28 12:12   /var/log/ambari-metrics-collector/collector-gc.log-201808130403
2018 Aug 28 14:32   /var/log/ambari-metrics-collector/gc.log-201808011229
2018 Aug 28 14:32   /var/log/ambari-metrics-collector/collector-gc.log-201808011229
2018 Aug 28 11:22   /var/log/ambari-metrics-collector/gc.log-201808091332

答案1

对于 GNU find,请使用-printf format代替-print.例如:

find /var/log/ambari-metrics-collector -type f -mtime +10 -regex '.*\.log.*[0-9]$' -printf '%TY %Tb %Td %TH:%TM %p\n'

第一个字母——当时的“type”:

  • %T——修改时间。
  • %C——创作时间。
  • %A——访问时间。

第二个字母(即紧随时间的“类型”之后)是来自strftime()/date要显示的字段。

注意-mtime +10查找超过的文件11天数,而不是 10(其年龄,向下舍入到整数天数为严格地大于10)。

另请注意,例如,它-regex '.*\.log.*[0-9]$'会匹配文件。foo.login/file.tar.bz2您不妨使用-name '*.log*[0-9]'更严格一点的标准(仍然匹配file.login.tar.bz2)。

相关内容