Eu acho que você pode ter um arquivo no diretório foo com caracteres não imprimíveis em seu nome. Compare os caracteres que você vê na saída ls com os caracteres reais ls saídas .
cd foo
ls # you see what your terminal lets you see
ls | od -a # you see the character codes *really* coming from ls
Existem vários métodos para ajudar a excluir um arquivo cujo nome você não pode ver ou digitar facilmente.
Aqui você pode usar a opção -i interativa de rm.
cd foo
rm -i *
Obviamente, tenha cuidado com isso. E diga apenas y ao que você deseja excluir.
Por que o seu primeiro rm -rf não o excluiu ... Gostaria de saber se você tem um apelido rm? Use alias rm para ver. Você pode executar temporariamente a versão real de rm (ignorando o alias) usando \rm -rf foo .