我跑了这个
find . -name '*.jar' | xargs jar tf
希望它能找到所有.jar
文件并执行jar tf
它们(以查看内容)。但它似乎不起作用!
答案1
您使用的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
,它只会读取文件1.jar,并期望其余部分与文件匹配之内档案。
因此你需要告诉xargs
运行命令每个文件一次:
find ... | xargs -d '\n' -n 1 jar tf
(该-d '\n'
选项与您的问题无关,但无论如何这是一个好主意 - 以防您碰巧发现一些文件名称中带有空格。)
更直接的方法是:
find ... -exec jar tf {} \;