tar t
lista o conteúdo do arquivo. Então, o seguinte pode funcionar, assumindo bash
e nenhum espaço em caminhos de arquivo:
tar xf archive.tar $( tar tf archive.tar | grep '.txt$' )
Não recursivo:
tar xf archive.tar $( tar tf archive.tar | grep '.txt$' | grep -v / )