java - 根据扩展名扰乱目录中的所有文件

标签 java bash shell jar sh

我正在尝试使用 Java 使用 jar 命令将文件夹中的所有文件打包,如下所示,

jar -cvf /Abhishek/logs.jar my_directory/logs/*.logs*

我正在使用 Java 来执行此操作。

String cmd[] = {"jar", "-cvf", "/Abhishek/logs.jar", "my_directory/logs/*.logs*"};
pb = Runtime.getRuntime().exec(cmd);

但只有 list 存储在 jar 中。

added manifest

当我提取 jar 文件时,我得到了 list 文件。 所以我对

*log.*

是否允许使用这种类型的语法? 因为它在终端中运行良好。

有人可以解释一下吗?

谢谢。

最佳答案

在 Linux 上,文件通配是由 shell 完成的。因此,当您在终端输入 *.log 时,shell 会将其展开到匹配文件列表。然后将其传递给程序。

如果直接执行程序,则必须自己扩展模式。或者您可以让 shell 使用类似的命令来执行它

String cmd[] = {"sh", "-c", "jar -cvf /Abhishek/logs.jar my_directory/logs/*.logs*"};

关于java - 根据扩展名扰乱目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49103834/

相关文章:

java - 无法使用 IAM 用户的访问 key 代入第三方 AWS 账户的角色

java - Apache IOUtils.copyLarge

multithreading - bash 从多个线程追加文件

Python/Django shell 无法启动

mysql - 在 Mac 上通过终端命令连接 MySQL 数据库

java - Flying Saucer 无法识别 html 实体

java - 在 Kotlin Android 中解析日期的正确方法(最低 Android 版本 21)。我的解析不起作用

bash - 在终端(Bash)中,你如何自动完成文件名中间的部分匹配?

bash - 如何使用 FFMPEG 的输出作为可执行文件的命令行参数

linux - Shell脚本中波浪号 "~/<folder>"与〜/"<folder>"有什么不同