列出文件夹内的所有 php 文件以及修改日期和权限

列出文件夹内的所有 php 文件以及修改日期和权限

我确实编写了一个脚本,每小时检查给定文件夹中的所有 php 文件是否有更改,这样我就可以检测可能的代码注入及其完整性。到目前为止,它运行正常,但我的方法似乎有点慢,并且分叉了太多ls进程。以下是代码:

/usr/bin/find /home/www -name "*.php" -exec ls -l \{} \;

有没有更好的办法?

请注意,我至少需要每个文件的完整路径、权限、所有者、组和修改时间。

谢谢!

答案1

Find 有一个内置操作“-ls”,可以满足您的需要(见下文)。如果这不是您想要的信息,您还可以使用 -printf 和格式指令精确控制打印的内容。

james@Brindle:/tmp/blah$ time /usr/bin/find . -name "*.php" -exec ls -l \{} \;
-rw-r--r--  1 james  wheel  0  8 Jul 08:50 ./other.php
-rw-r--r--  1 james  wheel  0  8 Jul 08:50 ./thing.php

real    0m0.015s
user    0m0.005s
sys     0m0.008s
james@Brindle:/tmp/blah$ time find . -ls
1631212        0 drwxr-xr-x    4 james            wheel                 136  8 Jul 08:50 .
1631215        0 -rw-r--r--    1 james            wheel                   0  8 Jul 08:50 ./other.php
1631213        0 -rw-r--r--    1 james            wheel                   0  8 Jul 08:50 ./thing.php

real    0m0.006s
user    0m0.002s
sys     0m0.003s

答案2

使用:find /home/www/ -type f -mmin -60 -iname '*.php'

-type f将加快检查速度,因为它仅限于文件。

-mmin -60是 60 分钟前修改的所有文件。

xargs如果您需要更多信息,则可以通过以下方式进行传输:find /home/www/ -type f -mmin -60 -iname '*.php' | xargs stat

答案3

你可能想看看助手。它确实实现了您所描述的功能,并且还带来了一些其他功能。

相关内容