【问题标题】:bash script - iterative merge files on a directorybash 脚本 - 目录上的迭代合并文件
【发布时间】:2012-10-25 23:39:30
【问题描述】:

您好,我想迭代合并 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 循环中使用迭代器来完成,但我不知道如何操作。

提前谢谢你..

【问题讨论】:

    标签: bash merge cygwin


    【解决方案1】:

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

    #!/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 列出具有相同前缀的文件的事实。如果您的文件名具有不同的前缀,并且您想要输出它们的特定顺序,则可以对其进行修改。

    【讨论】:

    • 非常感谢!我真的很感激,你为我节省了几个小时!谢谢谢谢谢谢
    猜你喜欢
    • 2018-11-15
    • 2017-01-24
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多