Bash 将多个文件连接到文件组中

Bash 将多个文件连接到文件组中,bash,Bash,我对BASH脚本比较陌生,需要一些帮助 我试图将312个文件连接成39组文件,这些文件的文件名非常糟糕。一个组的文件系列如下所示: C9F4BANXX-1959-01-21-01\u L003\u R1.fastq C9F4BANXX-1959-01-21-01\u L004\u R1.fastq C9F4BANXX-1959-01-21-01\u L005\u R1.fastq C9F4BANXX-1959-01-21-01\u L006\u R1.fastq 为了连接此组,我使用以下方法(我

我对BASH脚本比较陌生,需要一些帮助

我试图将312个文件连接成39组文件,这些文件的文件名非常糟糕。一个组的文件系列如下所示:

C9F4BANXX-1959-01-21-01\u L003\u R1.fastq

C9F4BANXX-1959-01-21-01\u L004\u R1.fastq

C9F4BANXX-1959-01-21-01\u L005\u R1.fastq

C9F4BANXX-1959-01-21-01\u L006\u R1.fastq

为了连接此组,我使用以下方法(我确信非常笨拙-但它可以工作):

文件的名称(粗体)在第三个字符串中有所不同,即

C9F4BANXX-1959-01-21-01\u L003\u R1.fastq

C9F4BANXX-1959-02-21-01\u L003\u R1.fastq

我正在努力弄清楚如何根据文件名中指示的位置设置循环,以迭代每组4个文件的连接


感谢您的帮助

如果我正确理解了问题,您可以使用for循环

您可以在子shell中使用seq来填充数字

for i in $(seq -f "%02g" 1 39);do cat *-"$i"-*_*_R1.fastq > "$i"_R1.fastq ;done

使用cat和通配符一点也不笨重,事实上,这可能是最有效的(合理的)方法。非常感谢-我努力将“for”循环的各个位放在一起,以便只在字符串的中心部分工作。刚刚探索了更多关于seq命令和您使用的格式的信息-非常酷!再次感谢-这是一个伟大的工具,用于我的其他工作
for i in $(seq -f "%02g" 1 39);do cat *-"$i"-*_*_R1.fastq > "$i"_R1.fastq ;done