查找在给定文件之前和之后30分钟创建的文件 - UNIX

时间:2012-10-08 10:27:52

标签: linux unix command debian command-line-interface

我正在尝试找出显示在创建另一个文件之前和之后30分钟(作为示例)创建的所有文件的命令。到目前为止,我设法找到比该文件更新的文件 但我无法弄清楚在给定时间之前和之后如何寻找。

我用过的命令: find -type f -newer file.txt -cmin -30

这样可以正常工作,但只能完成我想做的一半。 此外,我需要修改它来搜索setuid文件,我认为我可以通过在该命令中添加-perm -4000来做。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

据我所知,无法找到文件创建时间。 您可以尝试修改时间(这将使所有文件在5日和8日之间进行最后修改)

find . -type f -newermt 2012-10-05 ! -newermt 2012-10-08

(或访问时间将newermt替换为newerat

newerXY是用于比较当前文件的时间戳与引用的标志(有关详细信息,请参阅man find)。

根据man find(在我的debian上)有4个标志(除了t以外直接解释为时间)

a   The access time of the file reference
B   The birth time of the file reference
c   The inode status change time of reference
m   The modification time of the file reference

您也可以尝试'B'出生时间,但它对我不起作用,给我错误。我不知道为什么它包含在手册页

与其他档案进行比较

find / -newer file
find / ! -newer file

你可以创建临时文件(一个修改时间在目标文件前30分钟,另一个修改时间在30分钟后)

touch -d `stat -c %y test.txt` - 30 temp/before_temp
touch -d `stat -c %y test.txt` + 30 temp/after_temp

find / -newer temp/before_temp ! -newer temp/after_temp

touch -d需要一个日期选项,所以如果正确添加和减去,这应该可行。