Como mencionei em um comentário, se você não precisar da classificação da versão ( sort -V
), basta fazer sox *wav
. No Linux, *wav
passará por expansão de nome de arquivo, resultando em uma lista de nomes de arquivos classificados alfabeticamente. Isso é afetado por suas configurações de localidade, particularmente LC_COLLATE
, que você pode usar no Google para obter mais informações.
Se você precisar de sort -V
, a maneira correta de lidar com isso é com sequências de caracteres e matrizes terminadas com nulo para manipular nomes de arquivos com espaços e outros caracteres especiais. Esse script colocará a saída do comando sort
em uma matriz e executará sox
com essa lista.
#!/bin/bash
unset wav_files
while IFS= read -r -d '' file; do
wav_files+=("$file")
done < <(find . -maxdepth 1 -type f -name "*wav" -print0 | sort -V -z)
if (( ${#wav_files[@]} == 0 )); then
echo "No wav files found"
else
sox -- "${wav_files[@]}"
fi
Isso pode ser mais do que você esperava, mas é uma boa prática;)