根据前缀连接文本文件?

根据前缀连接文本文件?

在一个目录中,我有来自 1088 个组的 9792 个文件 (1088 x 9 = 9792),每个组都有一个唯一的 ID。我感兴趣的是仅连接那些与组 ID 作为前缀匹配的文件。

OG00 - 所有组/文件的前缀,我在下面显示

example filenames (with prefix) -
OG000190,OG0012877,OG0012858 .... (1088)

OG0011984
OG0011984._1_1.txt.fa 
OG0011984._1_2.txt.fa 
...
OG0011984._1_9.txt.fa 

OG0011288
OG0011288._1_1.txt.fa
OG0011288._1_2.txt.fa
....
OG0011288._1_8.txt.fa
OG0011288._1_9.txt.fa

OG0011219
OG0011219._1_1.txt.fa
OG0011219._1_2.txt.fa 
.... 
OG0011219._1_9.txt.fa

能够使用 cat 为每个组单独完成此操作。如何使用循环自动化该过程。我尝试无法重现,但有一些帮助。

     cat *OG0012884. > OG0012884_out.txt
        
        OG0012884._1_1.txt
        OG0012884._1_2.txt
        OG0012884._1_3.txt
        OG0012884._1_4.txt
        OG0012884._1_5.txt
        OG0012884._1_6.txt
        OG0012884._1_7.txt
        OG0012884._1_8.txt
        OG0012884._1_9.txt

答案1

似乎你可以做类似的事情(未经测试):

while IFS= read -r pfx; do
    cat "$pfx".* > "/some/other/directory/${pfx}_out.txt"
done < <(printf '%s\n' * | cut -d'.' -f1 | sort -u)

上面假设您的文件名都不包含换行符。

相关内容