如何通过Java代码运行命令

如何通过Java代码运行命令,java,linux,grep,command,Java,Linux,Grep,Command,我想通过Java代码执行以下命令。有人能建议我如何执行吗 查找./path/| grep关键字| grep-rnw-e关键字 我尝试了很多方法,但没有得到正确的输出。Runtime.getRuntime.exec是您的朋友 伙计们是对的,这是其他几个问题的重复,但主要是这个问题: 此处更好地介绍了打印响应: 看起来您希望通过java代码执行管道。我发现使用shell或bash最简单。如果可以,您还可以浏览org.apache.commons.exec包 我会这样做: import java.i

我想通过Java代码执行以下命令。有人能建议我如何执行吗

查找./path/| grep关键字| grep-rnw-e关键字

我尝试了很多方法,但没有得到正确的输出。

Runtime.getRuntime.exec是您的朋友

伙计们是对的,这是其他几个问题的重复,但主要是这个问题:

此处更好地介绍了打印响应:

看起来您希望通过java代码执行管道。我发现使用shell或bash最简单。如果可以,您还可以浏览org.apache.commons.exec包

我会这样做:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {

    public static void main(String argv[]) {
        try {
            String[] cmd = {
                    "/bin/sh",
                    "-c",
                    "find ./path/ | grep \"keyword\" | grep -rnw -e \"keyword\""
            };

            Process exec = Runtime.getRuntime().exec(cmd);

            BufferedReader stdInput = new BufferedReader(new InputStreamReader(exec.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(exec.getErrorStream()));

            System.out.println("Standard output:\n");
            String s;
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }

            System.out.println("Error output:\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我们看不到您的代码,因此无法告诉您代码出了什么问题。在网上找到这样的例子应该不难。伙计们,你们说这是其他问题的重复,但你们只指定了一个重复,这实际上是我想说的几个其他问题的组合。特别是在这里标记的原始问题根本不涉及管道。。。你太快了,在我的意见中将其标记为重复,谢谢你宝贵的回复!!我还有一个疑问。我想grep somekey=value/path/fileName。在命令窗口中,我使用/grepsomekey=\value\/path/fileName获得了输出。但是从Java来看,它不起作用。。你有什么解决办法吗?