Pour ma part, je ferais probablement les choses comme ça, mais bon, y'a pas énormément de changements :
Je précise que ce code est non-testé, et que je ne me suis pas du tout préoccupé de la partie utilisation de sox, que je ne connais pas bien
#!/bin/sh
# On suppose que le premier argument est le nom du fichier à créer
# Et que les noms des fichiers à traiter ont été passés en argument au script
if [ $# -lt 2 ]
then
echo "Erreur: utilisation: $0 output.flac input1.flac [input2.flac [input3.flac […]]]" 1>&2
exit 1
fi
TMPDIR=$(mktemp "/tmp/fusion_XXXX")
OUTPUT=$1
shift
## Resampling et numérotation
i=0
for f in $@
do
i=$((i+1))
N=$(basename "$f")
sox -S "${f}" -r 44100 -b 16 "${TMPDIR}/$(printf '%04g' ${i})_${N}"
done
## Fusion
sox "${TMPDIR}"/* "${TMPDIR}/00_fusion.flac"
## Suppression des blancs
sox "${TMPDIR}/00_fusion.flac" "${OUTPUT}" silence -l 1 0.1 1% -1 2.0 1%
## Effacement des fichiers temporaires
rm -r "${TMPDIR}"
Exemple d'appel du script :
./monscript.sh ~/résultat.flac ~/Musique/Dossier/Compil/*.flac
Je précise que ce script ne supprime pas les fichiers d'entrée contrairement au tiens. Je trouve ça trop dangereux de l'inclure au script, normalement un script de conversion ne fait pas ça ]]>