bash脚本 - 目录上的迭代合并文件

时间:2012-10-25 23:39:31

标签: text for-loop merge cygwin bash4

您好我想迭代合并input_directory中的文件,并将合并的文件放在output_directory中。

假设在input_directory中我有:file1.txt,file2.txt,file3.txt

我希望输出目录包含以下文件:

  • merge1.txt:与file1.txt相同
  • merge2.txt:合并file1.txt file2.txt
  • merge3.txt:合并file1.txt file2.txt file3.txt

我几乎没有使用bash脚本的经验,很明显它可以在for循环中使用迭代器来完成,但我不知道如何。

提前谢谢..

1 个答案:

答案 0 :(得分:0)

存储附加到输出的先前文件名,并在下一次迭代中使用它:

#!/bin/bash

touch prev #a temp variable to hold previous filename
i=1;

for file in $(ls /INPUT/file*); 
do 
   cat /OUTPUT/$prev /INPUT/$file > /OUTPUT/merge$i;
   prev=merge$i;
   let i=i+1
 done

此代码利用事实ls列出具有相同前缀的已排序文件。如果文件名具有不同的前缀并且具有要输出的特定顺序,则可以对其进行修改。