From the man page for `mv`, the first (and possibly second) argument on the command line, if it begins with a `-`, is an option and not a file. Only `-f | -i | -n` are allowed options.

Simplest way is not to use `-` in a file name—it will confuse other command line programs—given that prepending `-` is a workaround for something else I would just not use that character.

If this is not an option, you can rewrite the `mv` commands like this

    mv ./"$f" "${DIRNAME}/${FILENAME:2}"

or (a bit more generic because it then also works for absolute paths)

    mv -- "$f" "${DIRNAME}/${FILENAME:2}"