Com o tar do GNU:
tar cjf ../fubar-4.2.tar.bz2 --transform='s/^\./fubar-4.2/' --exclude='*.o' .
As implementações tradicionais de tar não têm como fazer isso. Mesmo o FreeBSD tar não tem nenhum recurso similar que eu saiba.
Com pax , o substituto POSIX para cpio e tar:
pax -w -s '/^\./fubar-4.2/' -s '/\.o$//' . | bzip2 >../fubar-4.2.tar.bz2
Embora pax
seja obrigatório nos padrões atuais POSIX / Single Unix, muitas distribuições Linux não o instalam por padrão. Se você suportar tanto o GNU tar quanto o pax, você cobrirá quase todos os unices não incorporados por aí.