1

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

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

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

有什么建议么?

4

1 回答 1

3

据我所知,没有办法找到文件创建时间。您可以按修改时间尝试(这将获得所有文件的最后修改时间在 5 日和 8 日之间)

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

(或访问时间替换newermtnewerat

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需要一个日期选项,所以如果你正确地添加和减去,这应该可以工作。

于 2012-10-08T11:39:29.077 回答