【问题标题】:java executing linux commandjava执行linux命令
【发布时间】:2012-04-17 03:26:00
【问题描述】:

我正在尝试从 java 代码执行 linux commant 'cat',但它不起作用。

Runtime.getRuntime().exec("cat /home/roman/logs/*");  

对于单个文件的猫来说效果很好

Runtime.getRuntime().exec("cat /home/roman/logs/mylog.log");

我的问题是如何从 java 中对某个目录上的所有文件进行分类?

【问题讨论】:

标签: java linux bash cat


【解决方案1】:

Runtim.exec() 不使用 shell 来执行命令。因此通配符没有被扩展。尝试Want to invoke a linux shell command from java中解释的解决方案

【讨论】:

    【解决方案2】:

    您可以将目录下的所有文件放入一个集合并对其进行迭代:

    File[] files = dir.listFiles();
    for (File f : files) {
      Runtime.getRuntime().exec("cat "+dir.getAbsolutePath()+File.separator+f.getName());
    }
    

    【讨论】:

      【解决方案3】:

      您不能将*exec() 命令一起使用(您需要一个shell)。一种解决方案可能是编写一个脚本,然后从您的 Java 应用程序中exec() 该脚本。

      【讨论】: