根据文件名列表打印目录中文件的某些行

2024-05-12 21:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印基于正则表达式的目录中许多文件的特定行。我有一个文件名列表和一个包含这些文件的目录。我只知道如何打印目录中所有文件的行。但我只需要打印filename.txt列表中文件的行

for f in ForPAML/*.paml; do grep -m 1 'Mm10' "$f"; done

我使用上面的方法打印目录中所有文件中包含Mm10的行

filename.txt类似于:

Mus_Rn5_.02.aa.fa.afa.paml
Mus_Rn5_.03.aa.fa.afa.paml
Mus_Rn5_.04.aa.fa.afa.paml
Mus_Rn5_.07.aa.fa.afa.paml

目录包含了这些文件以及更多的文件

例如,文件Mus_Rn5.03.aa.fa.afa.paml如下所示

 2     54
Mm10-chr19:41729055-41729126
ACACTCGAAGCTGCTGGCCAGCAAAGTCATTCTTGTGGATCCGAGTGTTGTTGC
1:268429604-268429675
ACACTCGAAGCTGCTGCCCAGCAAAGTCATTCTTATGGATCCGAGTATTGTTAC

我需要将所有包含“Mm10”的行连同文件名一起打印到一个新文件中。像这样的 Mus_Rn5_.02.aa.fa.afa.pamlMm10-chr19:41729055-41729126Mus_Rn5_.03.aa.fa.afa.pamlMm10-chr11:34068938-34068969Mus_Rn5_.04.aa.fa.afa.pamlMm10-chr11:34069868-34069905

此外,目录中的文件数量太多,因此我最终出现了“参数列表太长”错误,这就是我使用“for”循环的原因,该循环似乎正在工作


Tags: 文件目录txt列表for文件名filenamefa