Якщо припустити, що у вас є більше одного ядра, і кожне виклик може працювати незалежно від решти, ви отримаєте досить швидкі з паралельними прогонами.
Порівняно простий спосіб зробити це за допомогою -P
параметра xargs
- наприклад, якщо у вас є 4 ядра:
echo xyz{1..5025} | \
xargs -n 1 -P 4 -I{} /path/to/transeq xyz{} xyz{}.faa -table 11
-n 1
Каже , xargs
щоб вибрати тільки один аргумент зі списку для кожного виклику (за замовчуванням він буде проходити багато) , і -P 4
каже йому , щоб породити 4 процесів одночасно - коли хто -то вмирає, а нова породили.
IMHO, вам не потрібно встановлювати паралельно GNU для цього простого випадку - xargs
достатньо.
for file in xyz*; do ./transeq "$file" "${file}.faa" -table 11; done
. Я постійно друкую такі речі. І якщо ви хочете переконатися, що назви файлів тощо розширюються так, як вам потрібно, просто поставтеecho
право післяdo
першого разу, а потім поверніться до історії вашої оболонки та видаліть її вдруге.