用于使用java合并文件的Linux命令无效

用于使用java合并文件的Linux命令无效,java,linux,Java,Linux,我正在尝试使用java程序执行terminal命令来合并两个.csv文件,我的命令在terminal上运行良好,但在java中运行不正常 下面是我的代码: String command = "awk 'FNR==1 && NR!=1{next;}{print}' /opt/test/*.csv >> /opt/test/output.csv"; Process proc; int exitStatus; while (true) {

我正在尝试使用java程序执行terminal命令来合并两个.csv文件,我的命令在terminal上运行良好,但在java中运行不正常

下面是我的代码:

String command = "awk 'FNR==1 && NR!=1{next;}{print}' /opt/test/*.csv >> /opt/test/output.csv";

    Process proc;
    int exitStatus;
    while (true) {
        try {
            proc = Runtime.getRuntime().exec(command);

            exitStatus = proc.waitFor();

            break;
        } catch (java.lang.InterruptedException e) {
            System.out.println("inside exception" + e.getMessage());
        }
    }
    if (exitStatus != 0) {
        System.out.println("Problem occured");
    }

我认为问题不在于java代码,而在于Linux对文件的处理:您将输出定向到一个文件,该文件在创建后立即被视为输入

请尝试使用以下命令:


awk'FNR==1&&NR=1{next;}{print}'/opt/test/*.csv>>/opt/test/output.txt;mv/opt/test/output.txt/opt/test/output.csv

尝试读取错误流以查看发生了什么。您发现的一个示例是,我尝试了此操作,错误是:文件路径无效。感谢您的指导,但如果我尝试使用特定的文件名,即输入文件不等于输出文件的文件名。如果需要将每个.csv文件连接到另一个csv文件中,可以使用“cat/opt/test/*.csv>>/opt/test/output.txt&&mv/opt/test/output.txt/opt/test/output.csv”。这将在LinuxBash上完美地工作。实际上,命令应该是“/bin/bash-c\”cat/opt/test/*.csv>>/opt/test/output.txt;mv/opt/test/output.txt/opt/test/output.csv \“