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