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

如何扩展Bash脚本,筛选满足双内容条件的文件所在目录

扩展Bash脚本满足双重条件

你可以通过在find的-exec中嵌套shell命令,同时验证两个文件的条件。这里提供两种可行的写法:

写法一:基于原脚本扩展(先筛选符合条件的name文件,再验证同目录的available_instances)

find ../../devices -type f -name "name" -exec grep -q "8Q" {} \; -exec sh -c '
  # 获取当前name文件所在的目录
  dir=$(dirname "$1")
  # 检查该目录下的available_instances是否包含数字"1"
  if grep -q "1" "$dir/available_instances"; then
    echo "$dir"
  fi
' sh {} \;
  • 保留原脚本前半部分,先定位所有包含"8Q"的name文件
  • 通过sh -c启动子shell,用dirname提取文件所在目录
  • 对该目录下的available_instances文件做grep检查,符合条件就输出目录

写法二:直接遍历目录验证两个条件

find ../../devices -type d -exec sh -c '
  # 同时验证两个条件:name含"8Q",available_instances含"1"
  if grep -q "8Q" "$1/name" 2>/dev/null && grep -q "1" "$1/available_instances" 2>/dev/null; then
    echo "$1"
  fi
' sh {} \;
  • 直接遍历所有子目录,一次性检查两个文件的条件
  • 2>/dev/null用来屏蔽文件不存在时的错误提示,避免干扰正常输出

两种写法都能满足需求:第一种先过滤掉无符合条件name文件的目录,子目录较多时效率更高;第二种逻辑更直观,便于理解和维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:24