【发布时间】:2019-01-16 04:36:27
【问题描述】:
我试图通过查看类似主题来找到我的问题的答案,但没有成功。也许我忽略了。任何帮助表示赞赏!
所以,我的当前目录中有数百个文件夹,名称从 folder1000 到 folder1500。在每个文件夹中,我都有一个不同名称的 .fastq 文件(Lib1.fastq、Lib2.fastq 等)。我想通过运行 shell 脚本在一个循环命令中处理这些文件中的每一个。
这是我在终端中运行的一个文件的 shell 脚本 (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 脚本中创建的循环(这里我只使用一个简单的检查“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 行)。
谁能建议以最方便的方式处理所有文件的方法?
非常感谢,非常抱歉,我只是学习。
【问题讨论】:
-
你可能想用 seq 一天:
for i in $(seq 1000 1500); do echo $i; done
标签: file loops terminal directory fastq