I have a small script that works perfectly well, except that it tries and fails to read some files that I don't want it reading anyway. It has no operational impact except it takes more time to read those extra files.
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
The depth at which the DAT/
folder is located is not guaranteed, or I think I could somehow use maxdepth
argument.
However, I know that all the .zip
files are contained directly in the DAT/
directory, not any sub-directories.
Is there a way to specify the depth after the wild card? If it matters, I'm on git bash for windows.
CodePudding user response:
Use -regex
instead of -wholename
(which, BTW, is equivalent to the more portable -path
).
find "$FIND_START" -type f -regex '.*/DAT/[^/] \.zip'
[^/]
matches a sequence of characters that doesn't include /
, so it won't match across subdirectories of DAT
.