You need to enable JavaScript to run this app. Bash find命令如何查找指定目录下exr、dpx文件并排除含BTY的文件
优惠活动
大模型
产品
解决方案
定价
更多

Bash find命令如何查找指定目录下exr、dpx文件并排除含BTY的文件

find 命令逻辑修正方案

原命令的核心问题

你之前写的命令达不到预期,核心是两个设计错误:

  • 逻辑优先级没做分组:find 里的-o是“或”逻辑,平级从左到右判定,没加括号绑定条件的话,三个判定项是完全独立的,根本拼不出“先筛指定后缀、再排除带BTY文件”的嵌套逻辑
  • 排除逻辑完全写偏:你把排除条件当成第三个独立的“或”分支,既没覆盖dpx格式里BTY文件的排除需求,还错把“不是普通文件”当成分支判定项,等于排除动作完全没生效

拆解开原命令的实际判定逻辑就是:

匹配满足以下任意一个条件的对象:

  1. 是普通文件、后缀为.dpx
  2. 是普通文件、后缀为.exr
  3. 不是普通文件、后缀为.exr、文件名包含BTY

这个逻辑和你“筛dpx/exr普通文件、排除带BTY的文件”的需求完全偏离,自然出不来正确结果。

可直接执行的正确命令

macOS 系统适配版本(匹配你当前的用户路径环境)

find /Users/Tim/Downloads -type f \( -name "*.dpx" -o -name "*.exr" \) ! -name "*BTY*"

注意:命令里的括号()必须加反斜杠转义,否则会被shell当成脚本块解析报错。

命令逻辑拆解

  • -type f:只筛选普通文件,跳过目录、符号链接、设备文件等非文件对象
  • \( -name "*.dpx" -o -name "*.exr" \):通过转义括号把两个“匹配指定后缀”的条件绑定为一个独立判定组,从根源上避免逻辑优先级混乱
  • ! -name "*BTY*":在前面筛选出的dpx/exr文件集合里,排除所有文件名包含BTY的对象,同时覆盖两种格式的排除需求

可选调整方案

如果实际场景里的BTY大小写不固定(比如存在小写bty、混合大小写Bty的情况),可以把匹配后缀的-name替换为不区分大小写的-iname,调整后的命令为:
find /Users/Tim/Downloads -type f \( -iname "*.dpx" -o -iname "*.exr" \) ! -iname "*BTY*"


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 19:54:07