创建最近创建的文件的目录
在我所拥有的系统上,文件通过一系列不同的机制上传到一个中央“传入”目录中。 每天处理一次这些文件,然后将它们移到需要的位置(这里的逻辑不相关)。 它们最终位于/files/
的子目录中。 我想一个简单的(虽然在我的具体情况下不准确)是说以“a”开头的文件被移动到/files/a/afile
。
所以我在/files/
有一堆子目录。 这很棒,对我有用。 然而,客户刚刚告诉我,如果有一个“最近添加”的目录,过去一周的文件可用,那就太好了。
我的第一个想法是创建一个名为/recent-files/
的目录,并在将文件移出/incoming/
后扩展文件处理脚本以执行以下操作:
- 删除
/recent-files/
所有文件 - 扫描
/files/
一周内创建的任何文件(非目录) - 为每个真实路径创建符号链接并将其粘贴到
/recent-files/
听起来它会起作用,但是在算术和文件创建日期方面我的bash仍然很弱。 任何人都可以借给我一个手工制作一个find ... -exec ...
声明近似于第二部分和第三部分?
当然,如果还有另一种创建命令行和NFS可见“搜索目录”的方法,请告诉我。
find -L files -type f -newerct '-7 days' -exec ln -s -t recent-files {} +
(当然,根据需要更改“文件”和“最近文件”。)
-newer中使用的’c’不是创建时间,它是stat(命令,例如man 1 stat)所示的“change”字段。 目前,* nix文件系统存储创建时间并不常见,但可以使用更改(’c’),修改(’m’)和访问(’a’)时间。 如果您的文件系统确实存储了创建时间,您可以使用“B”(“出生时间”) – 如果不支持,您将立即收到错误消息。
您可以看到日期的确切截止值:
$ date -d '-7 days' Sat Oct 16 02:46:27 UTC 2010 $ date # this was executed one second later Sat Oct 23 02:46:28 UTC 2010
如果Zeitgeist和FUSE适用于您的场景, Zeitgeist Filesystem可以在用户空间文件系统中按时间排序文件和其他Zeitgeist事件。
另一个(更简单的)解决方案可能是在脚本中使用fileschanged之类的东西来监视目录中的传入文件。