创建最近创建的文件的目录

在我所拥有的系统上,文件通过一系列不同的机制上传到一个中央“传入”目录中。 每天处理一次这些文件,然后将它们移到需要的位置(这里的逻辑不相关)。 它们最终位于/files/的子目录中。 我想一个简单的(虽然在我的具体情况下不准确)是说以“a”开头的文件被移动到/files/a/afile

所以我在/files/有一堆子目录。 这很棒,对我有用。 然而,客户刚刚告诉我,如果有一个“最近添加”的目录,过去一周的文件可用,那就太好了。

我的第一个想法是创建一个名为/recent-files/的目录,并在将文件移出/incoming/后扩展文件处理脚本以执行以下操作:

  1. 删除/recent-files/所有文件
  2. 扫描/files/一周内创建的任何文件(非目录)
  3. 为每个真实路径创建符号链接并将其粘贴到/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之类的东西来监视目录中的传入文件。