On Linux, there seems to be an issue related to wildcards and finding files in general.
The following code will always fail on Linux, even with GAME set:
FileFindHandle_t hTest = FILESYSTEM_INVALID_FIND_HANDLE;
const char* pszTest = filesystem->FindFirstEx( "*_dir.vpk", "MOD", &hTest );
Msg("Wildcard test: %s\n", pszTest );
However, omitting the _ in the wildcard will make it work. This is not a problem on Windows it seems. Tested on Debian 12 and 13.