`ls` returned a bunch of files with lots of '?' in them. For e.g., herbertgr??????eyer - alkohol.txt. But, `vi *`, `ls -al` and `rm -rf *` returned 'no match'! I was stumped. Why did `ls` show me all those files while the other commads returned 'no match'?

Because you have files referenced in the directory (returned to ls by readdir()) whose inodes aren't valid (not returned to ls -al by stat()).

Whatever the OS X equivalent of fsck is, run it now. Your filesystem is corrupt.

Peter