给定time_t:
? date -ur 1312603983
Sat 6 Aug 2011 04:13:03 UTC
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个bash one-liner,它列出了所有较新的文件.比较应考虑时区.
就像是
find . --newer 1312603983
Run Code Online (Sandbox Code Playgroud)
但是使用time_t而不是文件.
小智 140
您可以找到在最后一天创建/修改的每个文件,使用此示例:
find /directory -newermt $(date +%Y-%m-%d -d '1 day ago') -type f -print
Run Code Online (Sandbox Code Playgroud)
要查找上周的所有内容,请使用"1周前"或"7天前"任何您想要的内容
Ste*_*abo 31
也许有人可以使用它.查找在递归的特定时间范围内修改的所有文件,只需运行:
find . -type f -newermt "2013-06-01" \! -newermt "2013-06-20"
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 17
这有点迂回,因为touch
它没有采用原始time_t
值,但它应该在脚本中非常安全地完成工作.(MacOS X中存在-r
选项date
;我没有仔细检查过GNU.)通过在touch
命令行中直接编写命令替换,可以避免'time'变量.
time=$(date -r 1312603983 '+%Y%m%d%H%M.%S')
marker=/tmp/marker.$$
trap "rm -f $marker; exit 1" 0 1 2 3 13 15
touch -t $time $marker
find . -type f -newer $marker
rm -f $marker
trap 0
Run Code Online (Sandbox Code Playgroud)
nob*_*bar 12
假设一个现代版本,find -newermt
是强大的:
find -newermt '10 minutes ago' ## other units work too, see `Date input formats`
Run Code Online (Sandbox Code Playgroud)
或者,如果您想指定一个time_t
(自epoch以来的秒数):
find -newermt @1568670245
Run Code Online (Sandbox Code Playgroud)
供参考,-newermt
没有直接列在手册页中供查找。相反,它显示为-newerXY
,其中XY
是 的占位符mt
。其他替换是合法的,但不适用于此解决方案。
来自man find -newerXY
:
时间规范被解释为 GNU 日期的 -d 选项的参数。
因此,以下等效于初始示例:
find -newermt "$(date '+%Y-%m-%d %H:%M:%S' -d '10 minutes ago')" ## long form using 'date'
find -newermt "@$(date +%s -d '10 minutes ago')" ## short form using 'date' -- notice '@'
Run Code Online (Sandbox Code Playgroud)
在date -d
(和find -newermt
)参数是相当灵活,但文档是模糊的。这是一个似乎很重要的来源:日期输入格式
rsa*_*den 10
给定unix时间戳(自纪元以来的秒数)1494500000
,执行:
find . -type f -newermt "$(date '+%Y-%m-%d %H:%M:%S' -d @1494500000)"
Run Code Online (Sandbox Code Playgroud)
要为"foo"grep这些文件:
find . -type f -newermt "$(date '+%Y-%m-%d %H:%M:%S' -d @1494500000)" -exec grep -H 'foo' '{}' \;
Run Code Online (Sandbox Code Playgroud)
您也可以在没有标记文件的情况下执行此操作
迄今为止的%s格式是自纪元以来的秒数.find的-mmin标志以分钟为单位取一个参数,因此将差值除以秒数.并且年龄前面的" - "表示查找最后修改小于年龄的文件.
time=1312603983
now=$(date +'%s')
((age = (now - time) / 60))
find . -type f -mmin -$age
Run Code Online (Sandbox Code Playgroud)
使用更新版本的gnu find,你可以使用-newermt,这使得它变得微不足道.
归档时间: |
|
查看次数: |
118301 次 |
最近记录: |