You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix中使用find命令按名称和权限搜索文件的异常问题

解决find命令组合条件失效的问题

问题根源分析

你遇到的问题不是-a选项失效,而是对-perm参数的用法理解有误:

  • -perm -mode表示文件权限必须包含指定的所有权限位,比如-perm -0000没有要求任何权限位,所以所有文件都满足这个条件,这时候加上-iname "R*"自然就等价于只按名称过滤。
  • 第二个命令里,看起来只按权限过滤,大概率是当前目录下所有以R开头的文件恰好都满足-perm -0222(即其他用户拥有写权限),所以筛选结果和单独搜权限的结果一致。

正确用法示例

根据你的需求,调整-perm的写法即可:

  1. 找名称以R开头且完全无任何权限的文件:
    用精确匹配权限0000,而不是-0000:

    find . -perm 0000 -iname "R*"
    

    (-a是默认的逻辑与,可省略)

  2. 找名称以R开头且其他用户有写权限的文件:
    确保目标目录下存在符合两个条件的文件,否则结果为空。命令本身没问题,可简化为:

    find . -iname "R*" -perm -0222
    
  3. 找名称以R开头且任意一类用户(所有者/组/其他)有写权限的文件:
    如果你的需求是只要有写权限位被设置,用/表示匹配任意位(部分旧系统用+,推荐用/):

    find . -iname "R*" -perm /0222
    

额外提示

  • 可以用ls -l查看目标文件的实际权限,验证条件是否合理;
  • 如果要排除某个条件,用!,比如找名称以R开头且其他用户没有写权限的文件:
    find . -iname "R*" ! -perm -0222
    

内容的提问来源于stack exchange,提问作者amine0395

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:01:27