2016-10-06 28 views
3

我正在使用Tracer軟件包(https://github.com/Teichlab/tracer)。 程序調用如下:在循環中運行命令時更改輸出文件名稱

tracer assemble [options] <file_1> [<file_2>] <cell_name> <output_directory>

該方案在單個數據集上運行,輸出去/<output_directory>/<cell_name>

我想現在做的是運行多個文件上這個節目。要做到這一點,這是我做的:

for filename in /home/tobias/tracer/datasets/test/*.fastq 
do 
echo "Processing $filename file..." 
python tracer assemble --single_end --fragment_length 62 --fragment_sd 1 $filename Tcell_test output; 
done 

這個工作在priciple,但cell_name是靜態的,每次迭代將覆蓋前一次迭代的輸出。我如何需要更改我的腳本以便爲輸出文件夾提供輸入文件的名稱?

例如:輸入文件名是tcell1.fastq。對於這個cell_name應該是tcell1。接下來的文件是tcell2.fastq和CELL_NAME應tcell2,等等...

回答

1

我認爲這會做,在bash,如果我理解正確的話 -

for filename in /home/tobias/tracer/datasets/test/*.fastq 
do 
    echo "Processing $filename file..." 
    basefilename="${filename##*/}" #<--- 
    python tracer assemble --single_end --fragment_length 62 --fragment_sd 1 "$filename" "${basefilename%.fastq}" output; 
    #                     ^^^^^^^^^^^^^^^^^^^^^^^^ 
done 

${filename##*/}刪除部分向上到最後的/${basefilename%.fastq}最後刪除.fastq

+0

非常感謝您的幫助。這個竅門! – baracus37

+0

@ baracus37很高興聽到它,歡迎來到該網站! – cxw

0

從我瞭解你使用的庫輸出寫入到預定義(不可配置)目錄

讓我們稱之爲output_dir。 在每次迭代中,您應該重命名輸出目錄。

所以,你的代碼應該是這樣的(僞代碼)

for filename in /home/tobias/tracer/datasets/test/*.fastq 
    do 
    echo "Processing $filename file..." 
    python tracer assemble --single_end --fragment_length 62 --fragment_sd 1 $filename Tcell_test output; 
    rename output_dir , each_file + "_output_dir" 
    done