查找相同时间的文件

查找相同时间的文件

我有一个包含文件对的目录。不幸的是,文件的命名方案很混乱,因此很难通过文件名将这些文件对相互关联。

但是:每对文件几乎都是同时创建的。“几乎”意味着间隔不到 1 分钟。不相关的文件的时间戳至少相差几个小时。

我如何找到每个文件对?

我想进一步处理它们。因此,最好使用一种可以被 bash 脚本很好地解析/使用的输出格式。

目录列表示例:

Mar 14  08:29   AAA_2018_03_20_33.xxx
Mar 14  08:30   BBB-xxx-20_4.pdf
May 3   08:32   AAA_2018_05_10_40.xxx
May 3   08:32   BBB-xxx-10_2.pdf
May 24  08:33   AAA_2018_05_30_44.xxx
May 24  08:33   BBB-xxx-30_5.pdf
Mar 23  08:44   AAA_2018_03_30_35.xxx
Mar 23  08:44   BBB-xxx-30_1.pdf
May 18  08:48   AAA_2018_05_25_43.xxx
May 18  08:48   BBB-xxx-25_7.pdf

我按时间对它们进行了排序,以突出显示哪些文件属于同一类。文件名也经过了轻微的审查。

可能存在需要处理的错误:同一时间增量内可能存在单个文件(缺少配对)或两个以上的文件。在这些情况下,我想调用 bash 函数来处理问题(记录它、通知用户等)。

答案1

草图:对于每个 AAA* 文件:

  • 获取时间戳(stat是你的朋友)
  • 计算匹配 BBB 的最小时间戳(我认为与 AAA 相同)以及 BBB 的最大 TS(AAA + 几分钟)
  • 使用两个时间戳作为条件find\( \! -newermt $maxts -a -newermt $mints \)
  • 重命名找到的文件(或创建链接)AAA-whatever-BBB-whatever.pdf(AAA_2018_03_20_33-BBB-xxx-20_4.pdf),以便您以后可以从 AAA 名称获取 BBB 名称。

相关内容