Shell-Script

在多個文件上執行命令

  • November 26, 2019

我有一個包含許多文件的文件夾(xyz1、xyz2,一直到 xyz5025),我需要在每個文件上執行一個腳本,獲取 xyz1.faa、xyz2.faa 等作為輸出。

單個文件的命令是:

./transeq xyz1 xyz1.faa -table 11

有沒有辦法自動做到這一點?也許是一個待辦事項組合?

for file in xyz*
do
 ./transeq "$file" "${file}.faa" -table 11
done

這是一個簡單的for循環,它將遍歷以xyz目前目錄開頭的每個文件,並./transeq以文件名作為第一個參數呼叫程序,文件名後跟“.faa”作為第二個參數,然後是“-table 11” .

如果您安裝GNU Parallel,您可以像這樣並行執行它:

parallel ./transeq {} {}.faa -table 11 ::: xyz*

如果你的程序是 CPU 密集型的,它應該會加速很多。

引用自:https://unix.stackexchange.com/questions/374673