File For循环:处理不同UNIX文件夹中的文件

File For循环:处理不同UNIX文件夹中的文件,file,loops,terminal,directory,fastq,File,Loops,Terminal,Directory,Fastq,我试图从类似的话题中找到我问题的答案,但没有成功。也许我忽略了。感谢您的帮助 因此,在我当前的目录中有数百个文件夹,名为folder1000到folder1500。在每个文件夹中,我都有一个名为Lib1.fastq、Lib2.fastq等的.fastq文件。我希望通过运行shell脚本在一个循环命令中处理这些文件 下面是我的shell script script.sh,它为一个文件创建输出,然后在终端中运行该输出: #!/bin/sh bowtie --threads 4 -v 2 -m 10

我试图从类似的话题中找到我问题的答案,但没有成功。也许我忽略了。感谢您的帮助

因此,在我当前的目录中有数百个文件夹,名为folder1000到folder1500。在每个文件夹中,我都有一个名为Lib1.fastq、Lib2.fastq等的.fastq文件。我希望通过运行shell脚本在一个循环命令中处理这些文件

下面是我的shell script script.sh,它为一个文件创建输出,然后在终端中运行该输出:

#!/bin/sh
bowtie --threads 4 -v 2 -m 10 -a genome Lib1.fastq --sam > Lib1.sam
samtools view -h -o Lib1.sam Lib1.bam
sort -k 3,3 -k 4,4n Lib1.sam > Lib1.sam.sorted
# ...etc
这是我试图在shell脚本中进行的循环,我仅从一个简单的checking head命令开始,并且仅从我当前目录运行的5个文件夹开始,其中所有文件夹都位于:

#!/bin/sh

for file in ./folder{1000..1005}
do
head -10 *.fastq
done
但结果我得到:

head: *.fastq: No such file or directory
head: *.fastq: No such file or directory
head: *.fastq: No such file or directory
head: *.fastq: No such file or directory
head: *.fastq: No such file or directory
因此,在循环中,即使是一个简单的检查命令也不适用于我。不知怎的,我看不见这个文件。但如果我直接在其中一个文件夹中运行该命令:

MacBook-Air-Maxim:folder1000 maxim$ head -10 *.fastq
然后我得到正确的结果,显示文件的前10行

有谁能建议以最方便的方式处理所有文件吗


非常感谢,非常抱歉,我只是在学习。

您正在使用变量$file遍历文件夹,但是您没有在循环体中使用此变量。只要使用它:

#!/bin/sh

for file in ./folder{1000..1005}
do
    head -10 $file/*.fastq
done

整个问题中还有其他问题,但这是阻止你前进的关键点的答案。让我们逐一解决这些问题:-

嗨!非常感谢@Poshi!这管用!你们是对的,还有大量的事情要做。有趣的是。它运行head命令,但当我在head命令之后使用下一个命令时,它说它找不到文件-head:./folder1000/*。fastq:没有这样的文件或目录stat:没有这样的文件或目录我很好奇,也许整个策略不正确,有更好的方法来组织它。。。因为这样我必须导入每个文件夹中的所有其他支持文件,才能真正运行代码,所以我不确定实际发生了什么。在我看来,该文件处于受限访问或smth下。它显示对齐读取的数量,然后表示找不到。错误消息之一是:警告:无法打开读取文件。/folder1000/*.fastq进行读取;正在跳过…没有这样的文件与无法打开文件进行读取完全不同。它们是不同的问题。我建议你学习一些关于Linux基础知识、命令行和文件系统的入门课程;不要重复$i;完成