使用 find 查找特定日期之前的文件名

使用 find 查找特定日期之前的文件名

我有大量带有时间戳的目录文件。这些文件看起来都像

2011-06-24_13.53.36  // a directory name for june 24th, 1:53:36 pm

我有数千个这样的目录。我想对一些较旧的目录进行操作。假设我给它一个与该格式完全匹配的日期时间字符串,就像我会给它

2011-06-25_00.00.00 // june 25th, 12am

我想找到我时间之前的所有目录。因此,如果我给出 6 月 25 日上午 12 点的字符串,我想找到该时间之前的所有目录。

可以使用 find 来完成吗?

如果没有,我可以像这样找到我拥有的每个目录,然后进行过滤。创建/修改日期与我寻找的实际时间戳无关(这会使这更容易)

答案1

此格式是可排序的字符串,因此您可以对相同格式的字符串进行字符串比较。

我不知道是否/如何find做到这一点,但这里有一个可能的 Perl 示例(如果所有文件夹都在同一位置并具有相同的格式):

perl -E "-d && $_ lt '2011-06-25_00.00.00' && say while <*>"

输出:

2011-05-28_00.00.00

(这对于我的小测试来说是正确的。)

答案2

一个奇怪的方法:

  • 假设工作目录下只有这些目录
  • 您正在 bash 或者类似环境中

以下命令将为您提供 6 月 25 日之前“按字母顺序排列”的文件列表。

ls -l | head -`ls -l | grep -n 2011-06-24 | cut -d: -f1`

现在请注意,名称模式标准是 2011_06_24(以避免结果中出现 2011_06_25)

相关内容