Я управлял этим
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 {} \;