Hi,
Unfortunately, there isn't a native filtering option in Transfer submission.
This is on our radar as a desired feature; you aren't the first to encounter this limitation.
Your best options, as far as I know, are to do one of the following:
1. Apply filtering in a step when preparing data for transfer, e.g. prepare data with `tar --exclude=...`
This also is a good time to apply data compression.
However, for very large datasets or those in which you have no non-Globus access to the source, it's generally not viable.
2. Do a filtered file listing and submit a non-recursive "batch" transfer
If you're using the CLI, this is something like `globus ls --filter=...`, and then using that output as input to `globus transfer --batch batch_file.txt ...`
3. Transfer all the data and then do a "glob" delete
If the overhead is not too high for you, and the filtering works for your case, you could transfer all of the data and then delete unwanted files in the destination.
For example
task_id="$(globus transfer --batch transfer_data.txt $SOURCE $DEST --jmespath 'task_id' --format=UNIX)"
globus task wait "$task_id"
globus delete --enable-globs $DEST --batch delete_data.txt
The data here matters a lot. With globs, the delete could handle inputs like `*.txt` or `*.jpe?g`
I'm happy to explain more if this solution interests you.
Thanks,
-Stephen