例如,如果我有3个文件,分别称为1.txt,2.txt和3.txt,并且它们的创建时间间隔为一个小时,则分别说1 pm、2pm和3pm.我需要的是一个命令,该命令可查找特定文件在一小时内修改的所有文件.

我与终端中的文件位于同一目录中,所有文件均为setuid权限

我一直在尝试:

找 . -f -perm -4000 -newer 2.txt -mmin -60 -print


这应该返回3.txt,但不会

在2.txt之前或之后的一个小时内创建的文件将使用什么?

解决方法:

这是我的逻辑-

自从某个变量中的Epoch以来,首次获取文件最后一次访问的时间(以秒为单位).

time_in_sec=$(stat -c %X 2.txt)

获取上一小时的时间(即返回3600秒)

one_hr_old_time_in_sec=`expr $time_in_sec - 3600`

将其转换为适合find命令的格式

newerthan=$(date -d @$one_hr_old_time_in_sec '+%m-%d-%y%n %H:%M:%S')

以适合于find命令的格式转换原始文件的时间

olderthan=$(date -d @$time_in_sec '+%m-%d-%y%n%H:%M:%S')

使用find命令获取两个时间段之间修改的文件列表

find . -newermt "$newerthan" ! -newermt "$olderthan" -print

如果可行,您可以编写一个小的Shell脚本,它将文件名作为参数,也可以尝试3600.

老实说,我还没有尝试过.希望它有效!

标签: linux, find, unix

相关文章推荐

添加新评论,含*的栏目为必填