I have an ETH wallet and there are many tokens in there. At least 20 erc20 tokens.
Simple question.
Is there a way to send all ERC20 tokens in one transaction to another ETH adress?
This is quite simple. You need to know better about the usage access of wallets and a common thinking about it. For each token withdrawal it has got separate contract address, upon that we need different transactions to be made for each and every tokens available in the wallet. Till date I haven't come across any such wallet access, maybe in future this might happen.
To make it simple you can not send all that token in one transaction even in exchange you have to do it one by one as the other said if you want to minimize the transaction fee set your gwei lower but expect a slow confirmation.