Você está confundindo a sintaxe da expressão regular (como usada por grep ) com padrões glob (usados pelo shell).
Na regex, . significa qualquer caractere único e * significa zero ou mais repetições. Então, grep 'NC022.*nii' corresponde NC022 a nii com qualquer coisa (incluindo nada) entre eles.
Por outro lado, . é literal em globs de shell, enquanto * significa zero ou mais caracteres. Então, NC022.*nii corresponde NC022. a nii com qualquer coisa (incluindo nada) entre eles.
Em particular, se você estiver tentando corresponder todos os arquivos com .nii extensão , o . está no lugar errado: você deseja NC022*.nii , ou seja,
mv NC022*.nii NC022/