在一个目录中,我有来自 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)
上面假设您的文件名都不包含换行符。