簡體   English   中英

For循環:處理UNIX中不同文件夾中的文件

[英]For loop: process files in different folders UNIX

我試圖尋找類似主題的問題的答案,但沒有成功。 也許我忽略了。 任何幫助表示贊賞!

因此,我在當前目錄中有數百個文件夾,名稱從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腳本中執行的循環(在這里,我僅從一個簡單的check“ 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

總體問題中還有其他問題,但這就是阻止您的答案。 讓我們一一解決問題:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM