#!/bin/bash MAX_CONCURRENT_JOBS=25 CURRENT_JOBS=0 # Using find to handle large number of files more robustly find . -maxdepth 1 -name "*.tiff" -print0 | while IFS= read -r -d $'\0' i; do ( e2proc2d.py "${i}" "${i/tiff/png}" --meanshrink=4 --average && \ e2proc2d.py "${i/tiff/png}" "${i/tiff/jpg}" --fixintscaling sane ) & CURRENT_JOBS=$((CURRENT_JOBS+1)) if (( CURRENT_JOBS >= MAX_CONCURRENT_JOBS )); then wait -n CURRENT_JOBS=$((CURRENT_JOBS-1)) fi done wait echo "All files processed."