使用find命令指定多查询条件时,下述语法是否正确?
关于你提供的find命令的语法正确性说明
你写的这条命令仅可在默认搭载GNU find的主流Linux发行版环境下正常运行,但存在兼容性缺陷和语义匹配偏差,具体问题如下:
- 兼容性问题:POSIX标准规定find命令的首个参数必须为搜索起始路径,你省略了该参数,GNU find会默认使用当前工作目录
.作为起始路径,但是在BSD系环境(包括MacOS)下该写法会直接报错。如果需要全系统搜索建议指定根路径/,仅搜索当前目录指定.即可,兼容性修正后的写法参考:find / -user kyle -ctime -1 -type f -size -100M - 语义匹配偏差:你需求中要匹配「最近24小时内生成的文件」,但
-ctime参数匹配的是文件状态变更时间(包括文件权限、所属组等元信息修改的时间,并非文件创建时间):- 如果要匹配的是文件内容修改时间24小时内,替换为
-mtime -1即可 - 如果确实需要匹配文件实际创建时间,仅GNU find 4.8.0及以上版本支持
-birthtime -1参数实现该需求,更低版本或非GNU环境无原生支持方案
- 如果要匹配的是文件内容修改时间24小时内,替换为
其余参数均符合语法要求:
-user kyle正确匹配文件所有者为kyle的对象-type f正确限定仅搜索普通文件,排除目录、软链接等其他文件类型-size -100M正确匹配大小小于100MiB(10241024字节为单位)的文件,如果你需要的是十进制单位的100MB(10001000字节),可改写为-size -100MB
内容的提问来源于stack exchange,提问作者Lyle Ginlat
相关产品推荐
相关产品推荐

