Linux下查找/etc目录首尾带数字且其他用户可执行文件问题求助
find命令报错排查与修复
核心错误原因
你编写的命令错误点在于分组括号的格式不符合find的要求:find 用于条件分组的括号属于运算符,不能用双引号直接包裹,否则会被find识别为待查找的路径,触发“paths must precede expression”类的报错。
你当前的分组逻辑本身是符合需求的,只要修正括号格式,就能实现「文件名以数字开头或结尾 且 其他用户有可执行权限」的匹配逻辑。
正确可执行的命令
基础可用版本(两种写法二选一即可)
- 转义括号写法
find /etc \( -name "[0-9]*" -o -name "*[0-9]" \) -perm -o=x -print
- 单引号包裹括号写法
find /etc '(' -name "[0-9]*" -o -name "*[0-9]" ')' -perm -o=x -print
可选优化版本
- 如果你只需要匹配普通文件,不需要匹配目录、软链接等其他类型的文件,可添加
-type f参数:
find /etc -type f \( -name "[0-9]*" -o -name "*[0-9]" \) -perm -o=x -print
- 如果执行时出现大量无意义的权限报错提示,可添加
2>/dev/null屏蔽错误输出:
find /etc \( -name "[0-9]*" -o -name "*[0-9]" \) -perm -o=x -print 2>/dev/null
内容的提问来源于stack exchange,提问作者IMAD ATIF
相关产品推荐
相关产品推荐

