Use apenas find com -exec :
find . -name '*bz2' -exec sh -c 'bzip2 -t "$0" 2>/dev/null || echo "$0 is corrupted"' {} \;
De man find :
-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of ';' is encountered. The string '{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command [...]
Portanto, o comando find acima, procurará todos os arquivos terminados em bz2 e iniciará um pequeno script sh em cada um deles. O {} é substituído por cada nome de arquivo encontrado. Isso é passado como o primeiro parâmetro ( $0 ) para o script sh , que executará bzip -t e reclamará se falhar. O 2>/dev/null descarta qualquer outra mensagem de erro para manter as coisas limpas.
Como alternativa, você pode usar o shell. Se você estiver usando bash , ative a opção globstar para tornar ** recurse em subdiretórios e verifique cada arquivo bzip:
shopt -s globstar
for file in folder/**/*bz; do bzip2 -t "$file" || echo "$file is corrupted"; done