Linux

查找+列印帶有時間戳的文件

  • May 6, 2020

以下查找語法將列印 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

使用 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'

第一個字母——時間的“類型”:

  • %T——修改時間。
  • %C——創作時間。
  • %A——訪問時間。

第二個字母(即緊跟在時間的«類型»之後)是從strftime()/date到顯示的欄位。

請注意,-mtime +10查找超過11天的文件,而不是 10 天(其年齡,向下舍入到整數天數嚴格大於 10)。

另請注意,這-regex '.*\.log.*[0-9]$'將與foo.login/file.tar.bz2文件匹配。您不妨使用-name '*.log*[0-9]'更嚴格的標準(仍將匹配 on file.login.tar.bz2)。

引用自:https://unix.stackexchange.com/questions/465510