重复合并一个文件夹中的文件与另一个文件夹中的文件

时间:2014-04-07 18:37:49

标签: bash file loops directory repeat

我在一个文件中有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

2 个答案:

答案 0 :(得分: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

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

E.g。

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

答案 1 :(得分:0)

这个脚本实际上就是这个伎俩。 文件名和扩展名实际上搞砸了我在问题中发布的脚本。

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