簡體   English   中英

Bash腳本:重命名輸出目錄

[英]Bash script: rename output directory

我做了一個bash腳本來運行程序(Velveth),該程序將目錄中的所有Fasta文件(.fa)作為輸入,並將結果提供到新目錄中。

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth outdirectory 21 -fasta -short "$filename"  
done

我可以循環拋出所有fasta文件,但是每次迭代都會將結果重寫到同一文件夾中。 如何為每次迭代重命名輸出目錄?

我嘗試使用與文件相同的名稱:

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth "$filename" 21 -fasta -short "$filename"  
done

但它不起作用。

謝謝。

您可以嘗試這樣的事情:

I=0
for filename in /home/lpp/Desktop/test/*.fa; do
    velveth outdirectory 21 -fasta -short "$filename"  
    mv "folder/result" "folder/result$I"
    I=$I+1
done

它將創建諸如result0 result1類的文件,依此類推

我建議您做的是在將Directoy用作輸出之前創建Directoy,並且不要創建與文件同名的目錄。 如果要將輸出與文件放在同一目錄中,建議這樣做:

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    mkdir ${filename%.*}
    velveth ${filename%.*} 21 -fasta -short "$filename"  
done

${filename%.*}將刪除文件的后綴,從而使foo脫離foo.fa ,這樣您就不會創建名稱與該文件完全相同的目錄...為該文件foo.fa創建目錄foo

velveth的第一個參數是輸出目錄,並且您提供的兩個腳本都不正確

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth outdirectory 21 -fasta -short "$filename"  
done

錯誤:所有目錄都相同

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth "$filename" 21 -fasta -short "$filename"  
done

錯誤:目錄等於輸出文件

velveth創建輸出目錄(如果它不存在),因此我猜如果您基於文件名傳遞參數將沒有問題:

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth "${filename%.*}" 21 -fasta -short "$filename"  
done

給定一個輸入文件/home/lpp/Desktop/test/test.favelveth將保存在目錄中的輸出文件/home/lpp/Desktop/test/test

另一個選擇可能是僅將一些“添加”到文件名中以設置輸出目錄:

#!/bin/bash
for filename  in /home/lpp/Desktop/test/*.fa; do
    velveth "$filename.out" 21 -fasta -short "$filename"  
done

給定一個輸入文件/home/lpp/Desktop/test/test.favelveth將保存在目錄中的輸出文件/home/lpp/Desktop/test/test.fa.out

暫無
暫無

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

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