Find supports `-o`


 find \! '(' -name '*.txt' -o -name '*.pdf' ')'

You need the parenthesis to make the precedence right. Find does a lot of stuff; I suggest reading through its manpage.

You can also do an or in `grep` (but really, you shouldn't parse the output of `ls`)

 ls | egrep -v '\.(txt|pdf)$' | column