Я управлял этим
find . -name '*.jar' | xargs jar tf
в надежде найти все файлы .jar и выполнить для них jar tf (для просмотра содержимого).
Но это не сработало !!!
Вы используете xargs и jar tf неправильно.
Первоначальная цель xargs - передать как можно больше файлов одновременно - так вы получите несколько jar tf file1 file2 file3 file4 ... file200 ...
Но jar t , как и tar t , принимает сразу только один файл .jar. Все остальные аргументы действуют как фильтры для того, что перечислить / извлечь. Например, jar tf thing.jar org/example будет перечислять только файлы из подкаталога «org / example».
Поэтому, если вы запустите jar tf file1.jar file2.jar file3.jar , он только читает file1.jar и ожидает, что остальное совпадет с файлами в архиве.
Таким образом, вместо этого вам нужно указать xargs запускать команду один раз для каждого файла:
find ... | xargs -d '\n' -n 1 jar tf
(Опция -d '\n' не имеет ничего общего с вашей проблемой, но, тем не менее, это хорошая идея - на тот случай, если вы обнаружите некоторые файлы с пробелами в их именах.)
Более прямой способ сделать то же самое:
find ... -exec jar tf {} \;