проще, конечно, исключить:
tar xf boll.tar --exclude=dir/b/*
но если хочется именно отбора по regexp-у, то напрямую, как я понимаю, не выйдет.
как-нибудь в обход:
tar xf boll.tar $(tar tf boll.tar | grep 'dir/[^b]/')
Принимает те же аргументы, что и tar, плюс самым первым аргументом - регулярное выражение. Запускает tar в интерактивном режиме и сам же ему и отвечает. На запросы о распаковке файла, соответствующего выражению, отвечает 'y', на все остальные запросы - n. Неплохо бы доработать скрипт, чтобы он правильно отвечал на такие запросы, как запрос о перезаписи существующего файла, и т.п. (а не жал на них тупо n)