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

yae*_*ael 2 linux find regular-expression

以下查找语法将打印旧的 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

小智 7

对于 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'
Run Code Online (Sandbox Code Playgroud)

时间的第一个字母 - «type»:

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

第二个字母(即紧跟在时间的 «type» 之后)是从strftime()/date到显示的字段。

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

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