Если я вас правильно понял, то вам нужно так:
{ task1; task3; } &
task2
Это должно указать вам правильное направление:
$ for i in {1..3}; do for j in {x..z}; do echo ${i}_${j}; done; done
1_x
1_y
1_z
2_x
2_y
2_z
3_x
3_y
3_z
Вопрос, который вы задаете, несколько глобальный, и существует множество способов автоматизировать определенные задачи. Проблема часто возникает из-за большого количества разных имен файлов или шаблонов соответствия регулярных выражений. Пожалуйста, создайте резервную копию файлов, прежде чем запускать какой-либо скрипт.
Чтобы понять направление, см. примеры:
array=(file1 file2 file3)
for i in "${array[@]}"; do
echo "$i"
done
user@workdir:#cd /dir && ls >../files.list
main() {
local list='/workdir/files.list'
for item in $(cat "$list"); do
func_read "$item"
done
}
func_read() {
local var="$1"
[[ ! -d "$var" ]] && \
while read -r line; do
echo "$line"
done < "$var"
}
main