如何过滤过去 n 分钟内权限发生变化的文件

如何过滤过去 n 分钟内权限发生变化的文件

例如,我有两个文件

-rw-rw----  1 1000 1000   5 Sep 28 01:25 file1
-rw-rw----  1 1000 1000  13 Sep 28 01:25 file2

之后echo "asdfg" >> file1(file1 内容被修改)

-rw-rw----  1 1000 1000  11 Sep 28 01:25 file1
-rw-rw----  1 1000 1000  13 Sep 28 01:25 file2

并且chmod 770 file2(file2 元数据已更改)

-rw-rw----  1 1000 1000  11 Sep 28 01:25 file1
-rwxrwx---  1 1000 1000  13 Sep 28 01:25 file2

运行find . -mmin -55分钟,结果符合预期,因为只有file1被修改

./file1

尝试了一下find . -cmin -5,然后我得到了这个

./file2
./file1

请帮我如何find列出仅更改权限的那个?

答案1

如果每个情况下的时间戳都正确,则看起来距离您创建文件的时间仍不到五分钟,这意味着 ctime 测试会因此触发。值得注意的是,当您编辑文件 1 时,其时间戳不会改变,这表明编辑发生在创建(或上次编辑)的同一分钟内。

您的语法似乎是正确的。以下是我的系统 (RHEL 7.4) 中的一个简单示例,带有时间戳以说明:

[testuser@dc0sandbox01 ~]$ date
Thu Sep 28 10:36:53 CEST 2017
[testuser@dc0sandbox01 ~]$ touch file1
[testuser@dc0sandbox01 ~]$ touch file2
[testuser@dc0sandbox01 ~]$ find . -cmin -1
.
./file1
./file2
[testuser@dc0sandbox01 ~]$ date
Thu Sep 28 10:37:09 CEST 2017

(wait for a minute)

[testuser@dc0sandbox01 ~]$ date
Thu Sep 28 10:38:11 CEST 2017
[testuser@dc0sandbox01 ~]$ find . -cmin -1
[testuser@dc0sandbox01 ~]$ chmod 660 file1
[testuser@dc0sandbox01 ~]$ find . -cmin -1
./file1
[testuser@dc0sandbox01 ~]$ date
Thu Sep 28 10:38:26 CEST 2017

如果仍然有问题,请尝试使用 stat 命令显示有关每个文件的详细信息:

[testuser@dc0sandbox01 ~]$ stat file1
  File: ‘file1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 286973      Links: 1
Access: (0660/-rw-rw----)  Uid: (10131/testuser)   Gid: (10131/testuser)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2017-09-28 10:36:56.331274189 +0200
Modify: 2017-09-28 10:36:56.331274189 +0200
Change: 2017-09-28 10:38:21.872727064 +0200
 Birth: -

相关内容