Linux下查询/home/scs目录含html_public文件的用户 禁用grep/sed/awk
定位持有html_public文件的用户实现方案
原有命令的问题
- 语法逻辑错误:
find /home/scs html_public会同时将/home/scs、当前目录下的html_public作为查找起点,并非在/home/scs范围内检索名为html_public的文件,输出内容不符合检索预期。 - 字段截取逻辑无效:硬编码取路径第6个字段完全依赖固定目录深度,
/home/scs下文件的层级不统一,截取结果必然混杂大量无效内容。
标准实现命令(完全禁用grep/sed/awk)
find /home/scs -name "html_public" -printf "%u\n" | sort -u
参数说明
find /home/scs -name "html_public":递归遍历/home/scs目录,精准匹配所有名为html_public的文件/目录条目,不会输出无关内容。-printf "%u\n":find内置格式化参数,直接输出匹配条目的所有者用户名,无需手动解析路径,从根源上避免字段截取错误。%u是GNU find内置占位符,对应文件所有者的用户名字段。sort -u:对输出的用户名去重,避免多个同名条目归属同一用户时产生冗余输出。
兼容场景备选方案
若遇到非GNU find不支持-printf参数的环境,可使用stat命令实现同等效果:find /home/scs -name "html_public" -exec stat -c "%U" {} \; | sort -u
该方案通过stat内置的%U占位符直接获取文件所有者用户名,全程未使用禁用工具。
内容的提问来源于stack exchange,提问作者justasking
相关产品推荐
相关产品推荐

