我有大量带有时间戳的目录文件。这些文件看起来都像
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)