Você está usando xargs
e jar tf
do jeito errado.
O propósito original de xargs
é passar tantos arquivos quanto possível de uma só vez - assim você acaba com algumas invocações jar tf file1 file2 file3 file4 ... file200 ...
.
Mas jar t
, bem como tar t
, aceita somente o um arquivo .jar de uma só vez. Todos os argumentos restantes atuam como filtros para o que listar / extrair. Por exemplo, jar tf thing.jar org/example
listaria apenas os arquivos do subdiretório "org / example".
Portanto, se você executar jar tf file1.jar file2.jar file3.jar
, ele somente lê arquivo1.jar , e espera que o resto corresponda aos arquivos dentro do arquivo.
Então, você precisa dizer xargs
para executar o comando uma vez por arquivo :
find ... | xargs -d '\n' -n 1 jar tf
(A opção -d '\n'
não tem nada a ver com o seu problema, mas, no entanto, é uma boa idéia - caso você encontre alguns arquivos com espaços em seus nomes.)
Uma maneira mais direta de fazer o mesmo é:
find ... -exec jar tf {} \;