#!/bin/bash usage() { cat <<-EOF Usage: $0 [files] EOF exit } maxj=`getconf _NPROCESSORS_ONLN` jobs=() [[ $# -eq 0 ]] && set -- *.flac for f in "$@" ; do case ${f} in -*) usage ;; esac m="${f%.flac}.mp3" ( flac -sdc "${f}" | \ lame --silent -V 0 -h - "${m}" id3cp "${f}" "${m}" ) & jobs+=( $! ) if [[ ${#jobs[@]} -eq ${maxj} ]] ; then wait ${jobs[0]} jobs=( ${jobs[@]:1} ) fi done wait