Yes there's a way to hide the a file from Windows' and Linux's file explorers, which is to start the file name with a dot
. and set the
s flags. In Windows that can be done by using the command line
ren file .file
attrib +h +s .file
Now the file cannot be seen by File Explorer, Nautilus, or Konqueror in their default settings on clean machines.
When you plug your flash disk in a Linux machine and open it using Nautilus, you may press Ctrl+H to show all hidden files. A better solution is to use your favorite shell to run this command in the flash disk's mounted directory.
Note: If you "clean" the flash drive using Linux and then plug it back in the suspicious Windows machine, you can assume that it's infected again.
Update: I'll try to address your newly expressed concerns from a real-world and practical point of view.
First, in theory. There is a chance that the Linux machine is infected with malware that forces it to hide certain files (namely other malware files). But in reality, the chances are very slim. But like anything in security, you can never be sure.
Practically speaking, plugging your infected flash disk in a Linux machine and removing all the bad files (assuming you do know what all the bad files are) guarantees with a high probability that your flash disk is now clean. As long as you don't plug it back in the infected Windows machine, it's safe to use amongst other clean Windows machines (assuming you are sure about which machines are clean).