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

查找所有用户拥有rw权限的文件 执行自写命令无返回如何解决

原命令问题排查

  • cut参数书写错误
    你写的cut -f1 d" "缺少分隔符参数的前缀-,正确的参数格式应为cut -f1 -d " ",同时ls -l输出字段间为多空格分隔,使用单空格作为分隔符的cut命令无法正确切分字段,会导致提取权限字段失败。
  • grep正则语法不匹配
    默认grep使用基础正则表达式,{}重复匹配符需要转义才能生效,你直接写.{4}rw.{4}会被识别为普通字符匹配,无法命中目标规则;如果要直接使用{}语法,需要给grep加-E参数启用扩展正则表达式。
  • 匹配逻辑不符合需求
    权限字段共10位,结构为[文件类型][属主权限3位][属组权限3位][其他用户权限3位]:
    如果你需要的是所有用户(属主、属组、其他所有用户)均有rw权限,匹配规则应为^.rw.rw.rw,对应第2-3、5-6、8-9位均为rw;
    如果你需要的是你示例中的「属主、属组均有rw权限」,匹配规则应为^.{4}rw,对应第5-6位为rw,原有正则多写了后面的.{4}会截断匹配范围。

正确实现方法

方法1:基于ls+grep的实现

# 输出属主、属组均有rw权限的完整文件信息
ls -l | grep -E '^.{4}rw'

# 输出所有用户均有rw权限的完整文件信息
ls -l | grep -E '^.rw.rw.rw'

这里直接用awk代替cut提取字段更稳定,如果你只需要输出权限字段可以用:

ls -l | awk '{print $1}' | grep -E '^.rw.rw.rw'

方法2:基于find的更可靠实现(推荐用于脚本场景)

find命令不受ls输出格式兼容性影响,更适合批量处理或脚本使用:

# 查找当前目录及子目录下所有用户均有读写权限的普通文件
find . -type f -perm /u=rw,g=rw,o=rw

# 查找当前目录及子目录下属主、属组均有读写权限的所有文件/目录
find . -perm /u=rw,g=rw

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:24:02