在具有多个文件的文件夹中连接具有不同名称但具有相同编号的文件

时间:2012-10-04 13:54:50

标签: bash shell

我是Shell / Bash的新手,但我想用它来建立一些分析的管道。我用bash生成了这样的多个文件:

for i in {1..10}; 
    do sim XX.in.$i.txt > XX.out.$i.txt;
    done;

for i in {1..10}; 
    do sim YY.in.$i.txt > YY.out.$i.txt;
    done;

给了我20个输出文件; XX.out.1.txt,XX.out.2.txt,YY.out.1.txt,YY.out.2.txt等。

现在我想要连接XX.out.1.txt和YY.out.1.txt,然后是XX.out.2.txt和YY.out.2.txt等,所以总是只有两个名字不同的文件但同样的数字。 最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以避免重复循环:

for i in {1..10}; do
  ( sim XX.in.${i}.txt; sim YY.in.${i}.txt ) > concatenated.${i}.txt
done

但是,如果您需要保留中间文件:

for i in {1..10}; do
  sim XX.in.${i}.txt > XX.out.${i}.txt
  sim YY.in.${i}.txt > YY.out.${i}.txt
  cat XX.out.${i}.txt YY.out.${i}.txt > concatenated.${i}.txt
done

答案 1 :(得分:0)

解决方案与您创建文件的方式非常相似:

for i in {1..10} ; do
    cat XX.out.$i.txt YY.out.$i.txt > concatenated.$i.txt
done