Olá galera, tive um problema hoje, seguinte: baixei um disco da internet, onde as músicas vieram somente com os números, mas sem o nome das mesmas, pois os nomes vieram num arquivo TXT exemplo:
Então, criei um Script em Shell que pega a 1° linha do txt e renomea o primeiro arquivo do diretório, depois pega a 2° e renomea a segunda música do diretório…e assim por diante
cat faixas.txt
01-Alceu Valença-Estação Da luz
02-Alceu Valença-Como Dois Animais
03-Alceu Valença-Tropicana
04-Alceu Valença-Petrolina Juazeiro
05-Alceu Valença-Anunciação
06-Alceu Valença-Coração Bobo
07-Alceu Valença-Solidão
08-Alceu Valença-Pelas Ruas Que Andei
09-Alceu Valença-Essa Menina
10-Alceu Valença-Cabelo No Pente
11-Alceu Valença-Leque Moleque
12-Alceu Valença-Girassol
13-Alceu Valença-O Ovo e a Galinha
14-Alceu Valença-Cantiga Do Sapo
15-Alceu Valença-Romance Da Bela Inês
16-Alceu Valença-Descida da Ladeira
17-Alceu Valença-Meu Forró Meu Canto
18-Alceu Valença-Rima Com Rima
19-Alceu Valença-Vou Pra Campinas
20-Alceu Valença-Eu Quero Ver Você Dizer Que Eu Sou Ruim
Levando em conta que no diretório também existiam outros arquivos que não eram música, ou seja, no formato JPG(Capa do disco) e o próprio arquivo com as músicas(faixas.txt), então o Script também deve ter a tarefa de NÃO renomeá-los. Com esse algoritmo na cabeça, criei o seguinte
sed -i 's/$/.mp3/' faixas.txt
max=$(ls *.mp3 | wc -l)
mkdir .temp
ls *.mp3 > .temp/lista_antiga_dos_arquivos.txt
for i in $(seq 1 $max)
do
#comandos
done
sed "$i!d" .temp/lista_antiga_dos_arquivos.txt > .temp/uma_das_musicas_lista_VELHA.txt
velho=$(cat .temp/uma_das_musicas_lista_VELHA.txt)
sed "$i!d" faixas.txt > .temp/uma_das_musicas_lista_NOVA.txt
novo=$(cat .temp/uma_das_musicas_lista_NOVA.txt)
mv "$velho" "$novo"
echo "$novo"
rm -rf .temp
#!/bin/bash
# www.terminalroot.com.br
sed -i 's/$/.mp3/' faixas.txt
max=$(ls *.mp3 | wc -l)
mkdir .temp
ls *.mp3 > .temp/lista_antiga_dos_arquivos.txt
for i in $(seq 1 $max)
do
sed "$i!d" .temp/lista_antiga_dos_arquivos.txt > .temp/uma_das_musicas_lista_VELHA.txt
velho=$(cat .temp/uma_das_musicas_lista_VELHA.txt)
sed "$i!d" faixas.txt > .temp/uma_das_musicas_lista_NOVA.txt
novo=$(cat .temp/uma_das_musicas_lista_NOVA.txt)
mv "$velho" "$novo"
echo $novo
done
rm -rf .temp