你能在查找中的通配符表达式后指定深度吗?
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
.
的子目录进行匹配
我有一个运行良好的小脚本,除了它尝试读取一些我不想让它读取的文件但失败了。它对操作没有影响,只是需要更多时间来读取这些额外的文件。
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
.