Il s'agit d'un problème courant avec les noms de fichiers/répertoires commençant par des symboles moins conventionnels. Votre problème est que mv traite --pycache-- comme un nom d'option long (puisqu'il commence par --, il y a aussi des options courtes, elles commencent par -). Veuillez consulter la page de manuel de getopt pour plus de détails sur les options longues et courtes.
La solution standard dans cette situation consiste à utiliser un double tiret vide -- before all argument, qui indique à la commande (mv dans votre cas, mais cela fonctionnera avec d'autres, cp par exemple) d'arrêter de traiter ce qui suit comme des options et de le traiter comme des arguments.
Ainsi, votre commande deviendra :
$ mv -- --pycache--/ __pycache__
et n'échouera pas.