Um nome de arquivo glob só será expandido se houver um arquivo correspondente no diretório atual - caso contrário (exceto as opções nullglob
ou failglob
shell) ele será transmitido como está. Então:
$ echo \+.*TODO
\+.*TODO
$ printf '+foo\n+TODO\n+bar' | grep \+.*TODO
+TODO
mas
$ touch '\+.abcTODO'
$ echo \+.*TODO
\+.abcTODO
$ printf '+foo\n+TODO\n+bar' | grep \+.*TODO
$ printf '+foo\n+TODO\n+bar' | grep \+.\*TODO
+TODO