如何使用bash脚本循环遍历两个文件

如何使用bash脚本循环遍历两个文件

我有两个文件夹,每个文件夹包含 500 个文件,文件夹 1:

HI.2622.001.Index_19.ED18_ND1W27-2_288_R1.fastq.gz_matches_default_numberalignment_per_read
HI.2622.001.Index_19.ED18_ND1W27-2_288_R2.fastq.gz_matches_default_numberalignment_per_read
HI.2622.001.Index_19.ED18_ND1W27-2_288_R3.fastq.gz_matches_default_numberalignment_per_read

和另一个文件夹(文件夹 2)

HI.2622.001.Index_19.ED18_ND1W27-2_288_R1.fastq.gz_matches_default_filtered
HI.2622.001.Index_19.ED18_ND1W27-2_288_R2.fastq.gz_matches_default_filtered
HI.2622.001.Index_19.ED18_ND1W27-2_288_R3.fastq.gz_matches_default_filtered

文件夹 1 中的第一个文件对应于文件夹 2 中的第一个文件,依此类推。我想保留文件 2 中第一列与文件一的第一列匹配的那些行。如果它是单个文件,我会很容易使用

awk 'FNR==NR {a[$1]; next}; $1 in a' file1 file2 > file_match 

但我有500个文件,所以我需要通过循环来运行它。我不知道如何循环2个文件!有什么建议吗?谢谢

答案1

将每个文件夹的文件存储在数组中:

f1=( /path/to/folder1/* )
f2=( /path/to/folder2/* )

然后迭代数组的数字索引

for idx in "${!f1[@]}"; do
    awk ... "${f1[$idx]}" "${f2[$idx]}" > "${f1[$idx]}.matched"
done

相关内容