加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – * nix:使用find命令执行嵌套-exec

发布时间:2020-05-31 00:55:26 所属栏目:PHP 来源:互联网
导读:我正在尝试执行以下操作:搜索所有777目录,然后在这些目录中搜索包含字符串“mail(”)的php文件.我的目标是使这一部分的cron-job运行每一个晚上,找到所有包含邮件功能的php文件,这些邮件功能可能已秘密插入到我们的服务器上.所以,我写了这个命令: find -type

我正在尝试执行以下操作:搜索所有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的嵌套是可能的.有什么明显我想念的吗?在此先感谢您的时间!

你不能嵌套查找-exec,但你可以嵌套sh,然后调用find -exec.使用GNU 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'

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读