find 的 -newermt 可以接受纪元时间吗?

Ste*_*hen 4 bash find

我试图查找在特定时间之后创建的文件,类似于此命令的执行方式:

find . -type f -newermt '1/30/2017 0:00:00'
Run Code Online (Sandbox Code Playgroud)

除了不是日期、时间、字符串之外,我需要时间戳记为从 EPOCHSECONDS 系统变量读取的纪元时间。这可以做到吗?或者是否有必要将 EPOCHSECONDS 转换为日期和时间字符串?

我这样问是因为在 shell 脚本中我需要设置一个等于 EPOCHSECONDS 的变量值,执行一些对未知文件进行更改的命令,然后使用 find 命令查看这些命令更改了哪些文件。

ste*_*ver 9

是的,它可以。

\n

-newerXY的条目告诉man find我们

\n
\n
Time specifications are interpreted as for the  argument\nto  the -d option of GNU date.\n
Run Code Online (Sandbox Code Playgroud)\n
\n

并从info 'date input formats'节点:

\n
\n

自纪元以来 29.9 秒

\n

如果在数字前面加上 \xe2\x80\x98@\xe2\x80\x99,则它表示内部时间戳\作为秒数。该数字可以包含内部小数点(\xe2\x80\x98.\xe2\x80\x99 或 \xe2\x80\x98,\xe2\x80\x99);内部表示不支持的任何多余精度都会被截断为负无穷大。这样的数字不能与任何其他日期项组合,因为它指定了完整的时间戳。

\n
\n

例如

\n
find . -type f -newermt @1485752400\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
secs=$(date +%s -d '1/30/2017 0:00:00')\nfind . -type f -newermt "@$secs"\n
Run Code Online (Sandbox Code Playgroud)\n