Scripts para gerenciamento em massa de arquivos

Post nerd.

Resolvi divulgar uns shell scripts pra gerenciamento em massa de arquivos (mp3) que eu fiz.
Eu perco horas ajeitando tags e nome dos arquivos. eu tenho um padrão pra isso, o meu padrão é numero-banda-titulo.mp3, todos esses nomes sem espaço. Quando o nome da banda tem mais de uma palavra, eu adoto o java style, a primeira letra da outra palavra fica maiúscula e se junta com o final da outra, .e.g.: iron maiden vira ironMaiden. Pro nome da música eu substituo os espaços por ‘_’. Os scripts são baseados nessas convenções.

A base dos scripts são comandos clássicos e maravilhosos: sed e tr.
Pra mexer com os arquivos mp3, eu uso o comando id3ren que foi o que mais amigável que eu encontrei.
Os scripts são GPL, você pode fazer o que quiser, só peço pra quem pegar deixar um comentário aí. Só pra saber se alguém pegou.

Ah sim, os arquivos não são amarrados a arquivos mp3.

– O primeiro script (esse não é meu) remove um padrão de um nome de arquivo.
Exemplo: vc tem 100 fotos e gostaria de remover o prefixo DSC para colocar viagem-passárgada, simples assim:

./removePadrao jpg DSC viagem-passargada-

Script:
#!/bin/bash

criterio=$1
antigo=$2
novo=$3

if [ $# -lt 3 ] ; then
echo “modo de usar: renomeia [criterio] [texto_a_ser_substituido] [texto_substituto]”
exit 0
fi

for arq in *$criterio*
do
mv “$arq” “$(echo $arq | sed “s/$antigo/$novo/”)”
done

– Quando vc pega mp3 cujos arquivos tem nome do tipo track01.mp3 mas as id3tags estão normais vc pode usar esse script pra pegar a tag do número da faixa e colocar no arquivo, e.g.:
track01.mp3 vira 01-track01.mp3

#!/bin/bash

for arq in *.mp3
do
numfaixa=”$(id3ren -showtag $arq | grep -i track |  sed ‘s/\ \ \ \ Track: //’)”
mv “$arq” “$numfaixa-$arq”
done

– o terceiro script faz a mesma coisa que o segundo só que com relação ao nome da faixa, ou seja, pega o nome da faixa da id3tag e coloca no arquivo. Há duas versões, na primeira, eu pego um padrão pra renomear o arquivo, na segunda, o script faz isso ‘sozinho’

v1:
#!/bin/bash

if [ $# -ne 1 ]
then
echo “usage: mudaNomeFaixaFromTagName.sh [padrao]”
exit 0
fi

antigo=”$1″

for arq in *
do
titulo=”$(id3ren -showtag $arq | grep -i song |  sed ‘s/Song Name: //’ | tr ‘ ‘ ‘_’)”
mv “$arq” “$(echo $arq | sed “s/$antigo/$antigo$titulo/”)”
done

v2:
#!/bin/bash

for arq in *
do
tag=”$(id3ren -showtag $arq | grep -i song | sed ‘s/Song Name: //’ | tr [:upper:] [:lower:])”
tag=”$(echo $tag | tr ‘ ‘ ‘_’)”
inicio=”$(basename $arq .mp3)”
echo $inicio$tag.mp3
mv “$arq” “$inicio$tag.mp3”
done

– O quarto script faz o contrário, pega o nome da faixa do arquivo mp3 e coloca na id3tag, mas atenção: ele segue o meu padrão supracitado. Aqui eu uso o comando eyeD3. Eu também uso um padrão que é pra saber onde termina o nome da banda e começa o nome da música, logo, o padrão é esse: o nome da banda

#!/bin/bash

if [ $# -lt 1 ] ; then
echo “modo de usar: $0 [padrao a ser substituido]”
exit 0
fi

padrao=$1

for arq in *.mp3;
do
titulo=$(echo “$arq” | sed ‘s/[0-9][0-9]-$padrao-//’ | sed ‘s/.mp3//’ | tr _ ‘ ‘);
echo $titulo;
eyeD3 -t “$titulo” “$arq”;
done

Basicamente, é isso. Eu tinha planos de fazer um super script que fizesse tudo isso de uma vez só, mas ai outras coisas mais importantes surgem, a preguiça domina, aí já viu…
Claro que tem muita coisa pra ser melhorada e tals, mas tá aí. Espero que sirva pra alguém

Em tempo, o melhor player do mundo é o Amarok!!

Anúncios

Sobre Arlen Nascimento
26 anos, Manaus.

4 Responses to Scripts para gerenciamento em massa de arquivos

  1. Pow, legal esse scritp, vou usá-lo. Não agora, que estou de ressaca de ontem, praticamente acabei de chegar no trabalho (são 12:23, hehe) e to com preguiça. Sem falar que tu bem podia fazer um tarball e colocar um link aí no post hein? Que tal? hehe
    Outra coisa: tem um plugin para o wordpress que facilita na hora de postar código-fonte de programas. Não sei qual é, mas se tu for na parte de plugins do wordpress com certeza acha.
    Ah, vou colocar teu blog no meu blogroll (ui!).

    []’s

  2. Alexsandro Barbosa Cruz says:

    Os Scripts são interessantes e ainda podem ser melhorados para atender um maior número de usuários. Eu estou bolando um script que pega as informações baixadas na biblioteca CDDB. Ele fará o tratamento da listagem com os nome da música e por fim usará a mesma para renomear o mp3. O script ainda está crú mas quando estiver melhor elaborado poderá muito bem se integrar ao do colega que postou. Abraços, Feliz Ano Novo !

  3. Pingback: Pai d’égua

  4. Pingback: Pai D’Égua » Juntando legenda com filme no Linux

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: