2017-11-27 5 views
-3

Javaコードで次のコマンドを実行します。どのように私はそれを実行することができます示唆することができますか?Javaコードからコマンドを実行する方法

find ./path/ | grep "キーワード" | grep -rnw -e "keyword"

私はいろいろ試していますが、適切な出力が得られていません。

+1

、我々はそれと間違って何を伝えることはできませんので、私たちはあなたのコードを見ることはできません。これをネット上で見つけるのは難しいことではありません。 – tripleee

+0

あなたはそれが他の質問と重複していると言っていますが、あなたはただ一つの重複を指定しています。実際に私が言う他のいくつかの質問の組み合わせです。特にここに書かれているオリジナルの質問はパイプについては全く話しません...私の意見では重複しているとマークするのが速すぎます –

答えて

0

Runtime.getRuntime().exec()はあなたの友人です。

Guysは、それはいくつかの他の質問の重複であることを右ですが、ほとんどは、この1:How to make pipes work with Runtime.exec()?

応答をプリントアウトが良く、ここで覆われている: java runtime.getruntime() getting output from executing a command line program

あなたはを通してパイプを実行するように思えますJavaコード。私はシェルまたは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(); 
     } 
    } 
} 
+0

こんにちはグララク、貴重な応答をありがとう!!私は別の疑問を持っています。私は "somekey =" value ""/path/fileNameをgrepしたかったのです。コマンドウィンドウから、/(grep "somekey = \" value \ ""/path/fileName)を使って出力を得ました。しかし、Javaから、それは動作していません..あなたは解決策がありますか? –

関連する問題