GavinCattell получил ближайший (для bash, IMO), но, как указал Mad_Ady, он не будет обрабатывать файлы "блокировки". Это должно:
Если есть другие ожидающие работы, wait также будет их ждать. Если вам нужно дождаться только копий, вы можете накапливать эти PID и ждать только те. Если нет, то вы можете удалить 3 строки с помощью «pids», но это более общий характер.
Кроме того, я добавил проверку, чтобы вообще избежать копирования:
pids=
for file in bigfile*
do
# Skip if file is not newer...
targ=/destination/$(basename "${file}")
[ "$targ" -nt "$file" ] && continue
# Use a lock file: ".fileN.lock" for each "bigfileN"
lock=".${file##*/big}.lock"
( touch $lock; cp "$file" "$targ"; rm $lock ) &
pids="$pids $!"
done
wait $pids
Между прочим, похоже, что вы копируете новые файлы в FTP-хранилище (или подобное). Если это так, вы могли бы рассмотреть стратегию копирования / переименования вместо файлов блокировки (но это уже другая тема).