Bash - 获取过去 12 小时的文件/复杂的名称格式
Bash - Get files for last 12 hours / sophisticated name format
我有一组日志,其名称如下:
SystemOut_15.07.20_23.00.00.log
SystemOut_15.07.21_10.27.17.log
SystemOut_15.07.21_16.48.29.log
SystemOut_15.07.22_15.57.46.log
SystemOut_15.07.22_13.03.46.log
从该列表中,我只需要获取过去 12 小时内的文件。
因此,作为输出,我将收到:
SystemOut_15.07.22_15.57.46.log
SystemOut_15.07.22_13.03.46.log
我遇到了以下名称的文件的类似问题,但由于日期采用简单格式,因此能够快速解决该问题:
servicemix.log.2015-07-21-11
servicemix.log.2015-07-22-12
servicemix.log.2015-07-22-13
所以我创建了一个名为 'day' 的变量:
day=$(date -d '-12 hour' +%F-%H)
并使用以下命令获取过去 12 小时的文件:
ls | awk -F. -v x=$day ' >= x'
你能帮助完成 SystemOut 文件吗,因为它们的名称语法包含下划线,这让我很困惑。
假设日志文件名中的日期时间格式为
YY.MM.DD_HH24.MI.SS,
day=$(date -d '-12 hour' +%Y.%m.%d_%H.%M.%S.log)
将世纪添加到日志文件名中的 2 位数年份,然后进行比较
ls | awk -F_ -v x=$day '"20""_" >= x'
或者,正如 Ed Morton 所建议的,find 可以像这样使用:
find . -type f -name '*.log' -cmin -720
此 returns 日志文件是在过去 720 分钟内创建的。准确地说,这意味着文件状态最后一次更改是在过去 720 分钟内。 -mmin 选项可用于按修改时间搜索。
我有一组日志,其名称如下:
SystemOut_15.07.20_23.00.00.log
SystemOut_15.07.21_10.27.17.log
SystemOut_15.07.21_16.48.29.log
SystemOut_15.07.22_15.57.46.log
SystemOut_15.07.22_13.03.46.log
从该列表中,我只需要获取过去 12 小时内的文件。 因此,作为输出,我将收到:
SystemOut_15.07.22_15.57.46.log
SystemOut_15.07.22_13.03.46.log
我遇到了以下名称的文件的类似问题,但由于日期采用简单格式,因此能够快速解决该问题:
servicemix.log.2015-07-21-11
servicemix.log.2015-07-22-12
servicemix.log.2015-07-22-13
所以我创建了一个名为 'day' 的变量:
day=$(date -d '-12 hour' +%F-%H)
并使用以下命令获取过去 12 小时的文件:
ls | awk -F. -v x=$day ' >= x'
你能帮助完成 SystemOut 文件吗,因为它们的名称语法包含下划线,这让我很困惑。
假设日志文件名中的日期时间格式为 YY.MM.DD_HH24.MI.SS,
day=$(date -d '-12 hour' +%Y.%m.%d_%H.%M.%S.log)
将世纪添加到日志文件名中的 2 位数年份,然后进行比较
ls | awk -F_ -v x=$day '"20""_" >= x'
或者,正如 Ed Morton 所建议的,find 可以像这样使用:
find . -type f -name '*.log' -cmin -720
此 returns 日志文件是在过去 720 分钟内创建的。准确地说,这意味着文件状态最后一次更改是在过去 720 分钟内。 -mmin 选项可用于按修改时间搜索。