По-перше, гадаю, ви неправильно сприймаєте принцип роботи командної оболонки.
Команда
буде оброблена оболонкою (bash), і mv отримає замість *.* список всіх файлів, що задовільняють виразу *.*. Якщо таких файлів 2, скажімо, 1.pdf та 2.docx, то з боку mv ця команда і
mv 1.pdf 2.docx /home/user/
виглядатимуть практично однаково (насправді доступ до оригінальної команди також є, але їм мало хто користується).
Тепер - про знаки. * - будь-яка послідовність знаків; ? - один будь-який знак; [список] - один будь-який зі списку. Список може бути через - ([0-9] - та саме що [0123456789]) і з виключенням ([^a-z] - те, все крім маленьких літер від a до z).
Тобто ваш запис означає "що завгодно, після чого крапка і один з символів [pdf, docx]. наприклад, такі імена підходять:
Zolin_777.c
someone111.f
WOW.,
А вам треба все, що закінчується на docx, pdf і odt треба? Ну так і пишіть:
mv *.pdf *.docx *.odt /home/user/
Bash розгорне це в список.