2016-08-17 12 views
1

JavaからUnix findコマンドを実行しようとしていますが、以下のエラーが表示されます。 これに適切なアプローチを提案してください - com.amex.scoring.dao.HiveDAOJavaを使用してUNIXコマンドを実行しています

/binに/ shのautomation.jar

のjava -cp:見つける/ AXP /リム/ NEMOの/ dev /ログ - タイプF -mtime -5 -exec LS {} \ ;:そのようなファイルまたはディレクトリ

Javaコード

private static final String COMMAND = "find /axp/rim/nemo/dev/logs -type f -mtime -5 -exec ls {} \\;"; 
private static final String SHELL_NAME = "/bin/sh"; 

public static void main(String[] args) throws IOException { 
    final ProcessBuilder pb = new ProcessBuilder(SHELL_NAME,COMMAND); 
    pb.redirectErrorStream(true); 
    final Process process = pb.start(); 
    final BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); 
    String line; 
    while ((line = br.readLine()) != null) { 
     System.out.println(line); 
    } 
} 
+2

フルパスを追加 – Jens

+0

@Jens、申し訳ありませんでした。どこにフルパスを追加したいですか? – RaJ

+0

をfindコマンドに追加して、私はlsコマンドについても考えています – Jens

答えて

1

それを見る:

package com.raj.shell; 

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

public class ExecuteShellComand { 

    public static void main(String[] args) { 

     ExecuteShellComand obj = new ExecuteShellComand(); 

     String output = obj.executeCommand(); 

     System.out.println(output); 

    } 

    private String executeCommand() { 

     StringBuffer output = new StringBuffer(); 

     try { 

      Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "cd && cat test.txt | grep Hello"}); 
      p.waitFor(); 
      BufferedReader reader 
        = new BufferedReader(new InputStreamReader(p.getInputStream())); 

      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       output.append(line + "\n"); 
      } 

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

     return output.toString(); 

    } 

} 
+3

いくつかの説明を追加することを検討してください。あなたの意見がなぜ機能しているのかを指摘してください。彼はそうではありません。ちょうどコードを削除しても良い答えはありません。 – GhostCat

関連する問題