Du verwendest xargs
und jar tf
den falschen Weg.
Der ursprüngliche Zweck von xargs
ist, so viele Dateien wie möglich auf einmal zu übergeben - so dass Sie ein paar jar tf file1 file2 file3 file4 ... file200 ...
Aufrufe haben.
Aber jar t
so ähnlich tar t
, akzeptiert nur eine .jar-Datei gleichzeitig. Alle übrigen Argumente dienen als Filter für das Auflisten / Extrahieren. Beispielsweise jar tf thing.jar org/example
würden nur Dateien aus dem Unterverzeichnis "org / example" aufgelistet.
Wenn Sie es ausführen jar tf file1.jar file2.jar file3.jar
, liest es nur file1.jar und erwartet, dass der Rest mit den Dateien im Archiv übereinstimmt .
Stattdessen müssen Sie xargs
den Befehl einmal pro Datei ausführen lassen :
find ... | xargs -d '\n' -n 1 jar tf
(Die -d '\n'
Option hat nichts mit Ihrem Problem zu tun, ist aber trotzdem eine gute Idee - nur für den Fall, dass Sie einige Dateien mit Leerzeichen im Namen finden.)
Ein direkterer Weg, das Gleiche zu tun, ist:
find ... -exec jar tf {} \;