【问题标题】:Merging files in one folder with files in another repeatedly将一个文件夹中的文件与另一个文件夹中的文件重复合并
【发布时间】:2014-05-20 04:01:29
【问题描述】:

我在一个文件中有 mfcc 功能,在另一个文件中有 f0 我想将它们放在一个文件中,用于目录中的所有文件,并将其保存到另一个目录中的文件中,用于 mfc 中的每个文件

paste -d '\t' /home/Documents/mfc/3.mfc.txt /home/Documents/f0/34-114.f0.txt > /home/fs/34-114.txt

该命令适用于一个文件,我想让它适用于所有文件

我试过了

for file in /home/Documents/mfc/*; do

    paste -d '\t' $file /home/Documents/f0/$(basename $file ).f0.txt > /home/Documents/fs/$(basename $file ).txt

done

返回错误提示找不到文件,因为 f0 文件夹中的文件扩展名不同

paste: /home/home/Documents/f0/6.raw.f.mfc.txt.f0.txt: No such file or directory
paste: /home/home/Documents/f0/7.raw.f.mfc.txt.f0.txt: No such file or directory
paste: /home/home/Documents/f0/8.raw.f.mfc.txt.f0.txt: No such file or directory
paste: /home/home/Documents/f0/9.raw.f.mfc.txt.f0.txt: No such file or directory
paste: /home/home/Documents/f0/10.raw.f.mfc.txt.f0.txt: No such file or directory

【问题讨论】:

    标签: bash file loops directory repeat


    【解决方案1】:

    我不确定这是否是你想要的,但你可以试试这个:

    #!/bin/bash
    arr=(/home/Documents/mfc/*txt)
    arr2=(/home/Documents/f0/*.txt)
    for i in $(seq 0 $((${#arr[@]}-1))); do
        paste -d "\t" ${arr[$i]} ${arr2[$i]}
    done
    

    此脚本假定您在两个文件夹中拥有相同数量的文件。如果您希望将输出放在多个文件中,则需要将标准输出重定向到某个文件

    例如

        paste -d "\t" ${arr[$i]} ${arr2[$i]} >> file$i.txt
    

    【讨论】:

      【解决方案2】:

      这个脚本确实起到了作用。 实际上是文件名和扩展名弄乱了我在问题中发布的脚本。

      for file in /home/Documents/mfc//*; do
      
      fname=$(basename "$file" .raw.f.mfc.txt)
      
          paste -d '\t' $file /home/Documents/f0/$fname.f0.txt > /home/Documents/fs/$fname.txt
      
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 2014-02-10
        • 2020-07-30
        • 2017-02-11
        相关资源
        最近更新 更多