我试图查找在特定时间之后创建的文件,类似于此命令的执行方式:
find . -type f -newermt '1/30/2017 0:00:00'
Run Code Online (Sandbox Code Playgroud)
除了不是日期、时间、字符串之外,我需要时间戳记为从 EPOCHSECONDS 系统变量读取的纪元时间。这可以做到吗?或者是否有必要将 EPOCHSECONDS 转换为日期和时间字符串?
我这样问是因为在 shell 脚本中我需要设置一个等于 EPOCHSECONDS 的变量值,执行一些对未知文件进行更改的命令,然后使用 find 命令查看这些命令更改了哪些文件。
是的,它可以。
\n-newerXY的条目告诉man find我们
\n\nRun Code Online (Sandbox Code Playgroud)\nTime specifications are interpreted as for the argument\nto the -d option of GNU date.\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
例如
\nfind . -type f -newermt @1485752400\nRun Code Online (Sandbox Code Playgroud)\n或者
\nsecs=$(date +%s -d '1/30/2017 0:00:00')\nfind . -type f -newermt "@$secs"\nRun Code Online (Sandbox Code Playgroud)\n