在基于Unix系统中按创建/修改日期查找文件

4
如何在Unix服务器上查找前一个月创建/修改的文件?
例如,如果当前是7月,则应显示在6月创建/修改的文件列表。

1
没有通用的文件系统记录文件创建日期的功能。您可以访问最后修改时间、最后访问时间和最后更改时间(即文件元数据上一次更改的时间)。 - William Pursell
我会使用 find 命令,查看 -amin -anewer -atime -cmin -cnewer -ctime -mmin -mtime 选项以获取可能的选项。同时请注意 Williams 的评论,指出创建时间未被保存。 - CoreyStup
Linux的ext4记录了文件的创建日期,FreeBSD的本地文件系统也是如此。但是它们不容易获取,因为大多数工具和脚本语言都不知道它们的存在。 - Alan Curry
3个回答

2

一种方法是执行该命令。

  • ls -laR | grep monthName 其中monthName可以是Jan,Feb,Mar等(记得将工作目录更改为您感兴趣的目录。还请注意,此方法是递归的,因此将检查所有子目录

使用此方法,您还可以检索所有文件权限等信息...

我相信会有更好的方法(如果它们跳入我的脑海,我会编辑这篇文章),但由于我在喝咖啡休息,这是我找到的最快的方法。


2
为了查找上个月修改的文件,您需要使用find命令和一个指定范围,例如:
cd /  (if you are wanting to start from the root)
find . -type f -mtime +26d -mtime -56d -print

您需要调整您的范围,以包含您希望包含的日期。

祝您一切顺利!


2
monthToFind=`date -d "1 months ago" "+%Y-%m"`
find . -printf "%TY-%Tm %p\n" | egrep "^$monthToFind " | sed "s/^$monthToFind //g"

使用“find”命令中的时间范围比此方法慢。 但是,时间范围很难确定,并且在执行命令时可能会迅速失效。

不幸的是,当文件上个月已修改并且本月也被修改时,此方法将无法检测到这些文件。 我不知道如何确定这些文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接