Shell-Script
為多個文件執行具有多個輸入的命令
我需要執行一個程序,使用 2 個文件作為輸入,期望 1 個輸出具有 6000 個文件,範圍從 abc0000.faa/abc0000.fna 到 abc6000.faa/abc6000.fna。我還需要輸出文件具有與輸入相同的文件名,但副檔名為 .paml。
這是僅針對文件 0000 的完整命令的範例。
./pal2nal.pl abc0000.faa abc0000.fna -codontable 11 -output paml > abc0000.paml
有沒有辦法自動為所有文件執行相同的命令?像在做的事情?
謝謝!
您可以遍歷一組輸入文件(
.faa
例如文件)並從中生成其他輸入文件和輸出文件名:for f in *.faa; do ./pal2nal.pl "$f" "${f%.faa}.fna" -codontable 11 -output paml > "${f%.faa}.paml" done
該
${f%word}
語法刪除了匹配的最短尾隨組件word
。
命令
seq -w 0 6000
將生成從 0 到 6000 的所有數字;如果一個數字少於四位,它將在左邊用 0 填充。您可以使用命令替換將命令包裝在 for 循環中:
for n in $(seq -w 0 6000) ;do ./pal2nal.pl abc$n.faa abc$n.fna -codontable 11 -output paml > abc$n.paml done