gpt4 book ai didi

php - *nix : Performing nested -exec with find command

转载 作者:IT王子 更新时间:2023-10-29 00:35:31 25 4
gpt4 key购买 nike

我正在尝试做以下事情:搜索所有 777 个目录,然后在这些目录中搜索那些包含字符串“mail(”的 php 文件。我的目标是使这成为 cron-job 的一部分它每晚运行并查找所有包含邮件功能的 php 文件,这些文件可能已经被偷偷插入到我们的服务器上。所以,我写了这个命令:

find -type d -perm 777 -exec find {} -name "*.php" \; -exec grep "mail(" {} \;

哪个(应该):

1:找到777权限的文件夹

2:对于每个这样的文件夹,找到其中包含的所有php文件

3:对于每个这样的文件,执行 grep 以查找字符串“mail(”

但是,它似乎并没有起作用。它正在做的是给我一个 777 特权目录中的 php 文件列表,但它没有执行 grep。我看过一些这样的帖子:

find -exec with multiple commands

这让我相信 -exec 的嵌套是可能的。有什么明显的我想念的吗?提前感谢您的宝贵时间!

最佳答案

您不能嵌套 find -exec,但可以嵌套 sh,它会依次调用 find -exec。使用 GNU find,您还必须重写内部 find 中的 {},这样外部 find 就不会替换它:

find . -type d -perm 777 \
-exec sh -c 'find "$1" -name "*.php" -exec grep "mail(" {""} \;' _ {} \;

这是对您问题最直接的回答。有多种方法可以简化它:

find . -type d -perm 777 \
-exec find {} -name '*.php' -print0 \; | xargs -0 grep -H 'mail('

一个更简单的 90% 版本将只使用 grep 来递归:

find . -type d -perm 777 -exec grep -HR 'mail(' \; | grep '\.php'

关于php - *nix : Performing nested -exec with find command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com