你能在查找中的通配符表达式后指定深度吗?

Can you specify the depth after a wildcard expression in find?

我有一个运行良好的小脚本,除了它尝试读取一些我不想让它读取的文件但失败了。它对操作没有影响,只是需要更多时间来读取这些额外的文件。

find "$FIND_START" -type f -wholename "*/DAT/*.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

无法保证 DAT/ 文件夹所在的深度,或者我想我可以以某种方式使用 maxdepth 参数。

但是,我知道所有 .zip 文件都直接包含在 DAT/ 目录中,而不是任何子目录。

有没有办法指定通配符后的深度?如果重要的话,我在 git bash for windows.

使用 -regex 而不是 -wholename(顺便说一句,相当于更便携的 -path)。

find "$FIND_START" -type f -regex '.*/DAT/[^/]+\.zip'

[^/]+ 匹配不包含 / 的字符序列,因此它不会跨 DAT.

的子目录进行匹配