在Perl中,在一个目录中读取多个相同扩展名的文件

在Perl中,在一个目录中读取多个相同扩展名的文件,perl,loops,fastq,Perl,Loops,Fastq,我目前在读取一个目录中的文件时遇到问题。 我需要将所有fastq文件放在一个文件中,并为每个文件运行脚本,然后将新文件放在“Edited_sequences”文件夹中。 我有一个剧本是 perl -ne '$i++; if($i<80001){print}' BM2003_TCCCAGAACAAC_L001_R1_001.fastq > ./Edited_sequences/BM2003_TCCCAGAACAAC_L001_R1_001.fastq perl-ne'$i++;如果(

我目前在读取一个目录中的文件时遇到问题。 我需要将所有fastq文件放在一个文件中,并为每个文件运行脚本,然后将新文件放在“Edited_sequences”文件夹中。 我有一个剧本是

perl -ne '$i++; if($i<80001){print}' BM2003_TCCCAGAACAAC_L001_R1_001.fastq > ./Edited_sequences/BM2003_TCCCAGAACAAC_L001_R1_001.fastq

perl-ne'$i++;如果($i您可以使用perl为您进行复制/粘贴,那么第一个参数
*。fastq
都是fastq文件,第二个参数
/Edited\u sequences
是新文件的目标文件夹

perl -e '$d=pop; `head -8000 "$_" > "$d/$_"` for @ARGV' *.fastq ./Edited_sequences
获取与特定表达式匹配的文件名数组。它经常与括号一起使用,非常类似于读取输入(您可以将其视为从目录中读取文件)

这是一个简单的示例,将打印当前目录中每个“.fastq”文件的名称:

print "$_\n" for <*.fastq>;
你有两个选择:

  • 使用Perl读取2000个文件,并将其作为程序的一部分运行
  • 使用Shell将这些2000文件中的每个文件传递到命令行
下面是bash的备选方案:

for file in *.fastq
do
    perl -ne '$i++; if($i<80001){print}' "$file" > "./Edited_sequences/$file"
done
然后,您可以查看
myoutput.txt
,以确保在实际造成任何伤害之前它看起来不错。一旦确定
myoutput.txt
是一个好文件,您可以将其作为shell脚本执行:

$ bash myoutput.txt
我想你的意思是“一个扩展名为.fastq的目录中的所有文件。”那么
*.fastq
呢?
for file in *.fastq
do
    echo "perl -ne '\$i++; if(\$i<80001){print}' \
\"$file\" > \"./Edited_sequences/$file\""    >> myoutput.txt
done
$ bash myoutput.txt