代码之家  ›  专栏  ›  技术社区  ›  user3344484

如何循环子目录并将输入管道传输到输出文件

  •  1
  • user3344484  · 技术社区  · 8 年前

    我以前从未做过bash,我正在努力创建一个自动脚本,通过每个子目录循环输入。 目前,我正在尝试用Java运行一个程序,该程序的脚本是从输入文本文件中输入每个用户的输入并输出结果。 输入文件示例:

    login
    logout
    

    You have logged in
    You have logged out
    

    脚本在文件夹中 /test/

    输入在子目录中 /test/input/somesubdirectory/someinput.txt 我想做的是循环遍历每个输入文本,以运行java并将其输出到如下文件夹中

    /test/output/somesubdirectory/output.log
    

    我所做的:

    java Test < /test/input/login/input.txt > /test/output/login/output.txt
    

    我只知道如何直接访问一个输入和一个输出,但我不确定如何循环每个子目录中的每个输入

    我试着做:

    counter=0
    for i in /test/input/*/*.txt;
    do 
    java Test < $i.txt > /test/output/login/$(counter).log
    counter=$((counter+1))
    done
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   anubhava    8 年前

    您可以使用:

    while IFS= read -d '' -r file; do 
       java Test < "$file" > /test/output/login/output-$((++counter)).log
    done < <(find /test/input -name '*.txt' -print0)
    

    Read more about this pattern in BASH FAQ

    推荐文章