Estou assumindo que você use Linux e GNU split . Se sim, você pode fazer isso diretamente com split .
Então, como funciona split ? Como na maioria dos softwares * nix, seu manual está disponível executando man split . Especificamente, o uso geral é
split [OPTION]... [INPUT [PREFIX]]
Isso significa que você pode especificar o prefixo por conta própria. Por exemplo, se você dividir um arquivo chamado foo e fornecer a barra de prefixo:
$ ls
foo
$ split foo bar
$ ls
baraa barab barac foo
Como você pode ver, como um prefixo foi dado a split , ele criou os arquivos chamados bar seguidos de um sufixo ( aa to ac neste caso). Então, no seu caso, você quer dar o nome do arquivo como um prefixo:
for f in *mp3; do split "$f" "$f"
Mas você também deseja remover a extensão para que a divisão em foo.mp3 não resulte em foo.mp3aa , mas fooaa . Isso pode ser feito usando as capacidades de manipulação da string do bash escrevendo ${f%.mp3} em vez de simples $f .
Finalmente, você pode usar outro recurso bacana de split para adicionar a extensão:
--additional-suffix=SUFFIX
append an additional SUFFIX to file names.
Então, juntando tudo:
for f in *mp3; do
split --bytes=2500k --additional-suffix=".mp3" -d "$f" "${f%.mp3}_";
done
Eu corri isso em um diretório que continha os seguintes arquivos:
aa.mp3 bb.mp3 cc.mp3
E isso resultou nesses nomes de arquivos divididos:
aa_00.mp3 aa_02.mp3 bb_00.mp3 bb_02.mp3 cc_00.mp3 cc_02.mp3
aa_01.mp3 aa_03.mp3 bb_01.mp3 bb_03.mp3 cc_01.mp3 cc_03.mp3