Você precisa -exec
de um comando shell:
find . -name "*.txt" -exec sh -c 'tar cfj $(basename "{}" .txt).tb2 "{}"' -- {} \;
Além disso, observe que o comando find
está localizando os arquivos em todos os níveis. Como tal, usar basename
para passar a lista de arquivos não funcionaria se os arquivos não existissem no diretório atual.
Para elaborar,
tar cfj foo.tb2 foo.txt
resultaria em erros se foo.txt
não existir no diretório atual. Como tal, você precisa passar o caminho para foo.txt
.