This is a standard issue with filenames/directories starting with less conventional symbols. Your problem is that mv is treating --pycache-- as long option name (since it starts with --, there are also short options, they start with -). Please see manpage for getopt for details about long and short options.
The standard workaround in this situation is to use an empty double dash -- before all argument, which tells the command (mv in your case, but will work with others, cp for example) to stop treating what follows as options and treat it as arguments.
Thus, your command will become:
$ mv -- --pycache--/ __pycache__
and won't fail.
8good answer but I think you mean -- tells the command to stop treating what follows as options and treat it as arguments, not the other way round. – RoundTower – 2011-11-26T12:24:59.280
1I think it's more portable to prepend
./
:mv ./--pycache-- __pycache__
. – Kevin – 2011-11-26T18:32:02.1073@Kevin That works only if the argument is a file name. – starblue – 2011-11-26T18:42:23.140