for pdbb in T0950-B_*.pdb; do
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
Подстановка параметра ${pdbb#*_}
превратит строку T0950-B_55.pdb
в 55.pdb
(удаляет все, вплоть до первого _
символа, включая первый).
Это зависит от существующей PDBB-файлов и не пытается перебирать целые числа.
Если вы хотите только цикл по первым 100 B-файлам PDB, тогда вы можете использовать
for pdbb in T0950-B_{1..100}.pdb; do
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
или
for (( i = 1; i <= 100; ++i )); do
pdbb="T0950-B_$i.pdb"
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
, но эти два варианта не гарантируют, что итерированные файлы действительно существуют.
Отвечая на комментарии (есть также файлы с именами, такими как H0957-B.1.pdb
).
Да, они не будут восприняты вышеуказанным кодом.Вместо этого вы бы сделали что-то вроде
for pdbb in H0957-B.*.pdb; do
cat H0957-A.pdb "$pdbb" >"Somename-H0957_${pdbb#*.}"
done