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

如何在find命令的通配符表达式后指定搜索深度?

优化方案

你可以通过两层find嵌套的方式实现需求,完全匹配你的使用条件,且不会额外扫描多余文件:

find "$FIND_START" -type d -name "DAT" -exec find {} -maxdepth 1 -type f -name "*.zip" \; | while read -r SOURCE_FILE
do
    echo "Generating data from $SOURCE_FILE"
    java -jar \
        generator-0.2.4-jar-with-dependencies.jar \
        $SOURCE_FILE $VARIATION $OUTPUT_DIR $NUM_GENERATE $SEED \
        > stdout.txt 2> stderr.txt
done

原理解释

  • 第一层find从你指定的起始目录开始,不限深度查找所有名称为DAT的文件夹,解决了DAT层级不固定的问题
  • 对每个找到的DAT文件夹,执行第二层find,通过-maxdepth 1限制只搜索DAT目录的直接子文件,不扫描DAT的子目录,刚好匹配你所有zip都直接存放在DAT下的条件
  • 相比你原写法用-wholename做全路径匹配的逻辑,该方案不会扫描DAT以外的目录下的文件,大幅减少不必要的IO操作,降低耗时

兼容性说明

Windows下的Git Bash自带的是GNU版本的find,完全支持上述-maxdepth、-exec参数,可直接运行无需额外调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:03