如何循环遍历子目录和管道输入到输出文件

时间:2017-11-06 20:55:33

标签: java linux bash

我之前从未做过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直接位于测试文件夹

之外

我做了什么:

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 个答案:

答案 0 :(得分:0)

您可以使用:

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