2013-04-29 31 views
0

我正在使用Mac Os。這是執行我的程序的命令行代碼(兩部分)幾次啓動程序

nucmer --mum file1.txt file2.txt 

show-snps -Clr -x 2 out.delta > out_file1.snps 

程序的第一部分創建文件out.delta。我的file2.txt總是相同的,但我想要啓動這兩部分35000次不同file1.txt。所有的file1都位於同一個目錄中。

使用BASH可以做到嗎?

回答

2

將所有輸入文件保留在目錄中。創建一個包裝腳本來調用nucmer腳本,然後調用show-snps腳本。包裝腳本將接受文件目錄的路徑作爲輸入。迭代目錄中的所有文件並調用你的兩個腳本。

1

你可以做一些沿着這些路線:

find . -maxdepth 1 -type f -print | grep -v './out_' | while read f 
do 
    b=$(basename ${f}) 
    nucmer --mum ${f} file2.txt 
    show-snps -Clr -x 2 out.delta > out_${b}.snps 
done 

find位認爲在當前目錄下的所有文件。 grep會過濾掉以前的任何輸出文件,以防先前執行過一些輸出文件。 basename行刪除前導./和尾隨擴展名,然後您的兩個程序運行輸入文件名稱和基於輸出的基於名稱的輸出文件名。

0

如果你沒有得到的參數列表過長的錯誤,你可以只使用:

for f in file*.txt; do nucmer --mum $f second.txt; show-snps -Clr -x 2 out.delta > out_${f%.txt}.snps; done