|
From: | Julio C. Neves |
Subject: | Re: [shell-script] Re: Executar comando com o find., |
Date: | Sat, 21 Dec 2013 13:25:07 +0000 |
É eu já esperava.
Uma pena facilitaria muito o trabalho.Minha mente tem a tendência de "funcionalizar" e "classificar" tudo quando penso em programação.Coisas que aprendi em OO.Para fugir do laço, fiz assim:Converter () {arq=$1/usr/bin/avconv -y -i "$arq" -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 "${arq/.mp3/.ogg}"rm "$arq"}export -f Converterfind . -type f -name \*.mp3 -exec bash -c 'Converter "{}"' \;Só não avaliar se isso ficaria mais leve que o laço ou sua opção. O que acha?Falando na sia ideia, testei e logo na primeira linha encontrei um impasse:Música$ ls *.mp3ls: não é possível acessar *.mp3: Arquivo ou diretório não encontradoAcho que isso deve ser porque ordeno as coisas assim: Banda/Artista > Álbum > MúsicaNão há arquivos no diretório na "raíz" da pasta de músicas.E na verdade, antes de criar este tópico, o LS foi meu primeiro teste.Sigo na tentando entender o resto do script. :D
Confesso que está me fazendo queimar neurônios com as manpages...
Em sexta-feira, 20 de dezembro de 2013, Julio C. Neves escreveu:
acho que com um find + -exec só, vc não conseguirá.Outra forma:mp3=$(ls *.mp3)ogg=$(echo "${var//mp3/ogg}")eval paste <(echo "$mp3") <(echo "$ogg") | sed 's|^|/usr/bin/aconv -y -i|; s|mp3 |mp3 -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 |'Acho que isso funciona. Não tem loop mas deve sr lento.Execute pedaço a pedaço que vc entenderá.Abcs,Julio@juliobashFacebook!? Not even if a cow coughs...;)Posso dar treinamento Shell em qualquer parte do país.Me mande um e-mail para saber detalhes ouecho 618921594007727281449002107776021103258914797578P | dcEm 20 de dezembro de 2013 21:48, Rodrigo Tenorio <address@hidden> escreveu:
Poxa Julio.
Só vi sua mensagem agora que cheguei em casa. Desculpe.
Eu já tinha visto essa sua dica aqui na lista.
Obrigado pela resposta.
Osvaldo e listeiros.
A situação é que o comando pede que eu insira o arquivo a ser processado "caminho/arquivo.mp3" e o caminho do arquivo resultado "caminho/arquivo.ogg".
O problema é que eu não consegui até agora executar essa troca dentro do exec do find.
Por exemplo eu fiz o seguinte:
find . -type f -name 01\*.mp3 -exec /usr/bin/aconv -y -i "{}" -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 "{}" \;
Não deu certo porque o nome do destino também ficou como MP3.
Tentei fazer substituição de string de mp3 para ogg como se fosse uma variável, mas obviamente não deu certo.
Alguém sabe se isso é possível? Ou... não possível?
Muito grato!Em 20/12/2013 08:51, "Osvaldo Filho" <address@hidden> escreveu:
Corrigindo:find . -name \*.mp3 -exec comando_conversao {} \ && rm -v {} \;2013/12/20 Osvaldo Filho <address@hidden>
Não tenho como testar agora, mas pode ser que resolva...find . \*.mp3 -exec comando_conversao {} \ && rm -v {} \;2013/12/20 Rodrigo Tenorio <address@hidden>Osvaldo, bom dia.
Obrigado pela resposta!Nesta solução eu cheguei. :)
Desculpe se não me fiz entender, mas eu queria aprender a usar a opção "-exec" do find.Até o momento eu não consegui imaginar como fazer para passar o caminho do arquivo.mp3 e arquivo.ogg para o comando de conversão dentro do parâmetro exec.
Precisava de uma luz quanto a isso.Em 20/12/2013 08:15, "Osvaldo Filho" <address@hidden> escreveu:
Creio que seria algo mais ou menos assim:#!/bin/bashfor i in `find "local" -name *.mp3`docomando: converter_arquivorm -v $idoneEsse pequeno script pode lhe ajudar.2013/12/19 Rodrigo Tenorio <address@hidden>
Pessoal,
Existe uma maneira de com um find -name "mp3", realizar a conversão recursiva dos arquivos encontrados?
O comando abaixo faria a conversão de um arquivo.../usr/bin/aconv -y -i "arquivo.mp3" -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 "arquivo.ogg"
E no fim, apagar o arquivo.mp3.
Alguém saberia me ajudar?
Grato,
Rodrigo Boechat--Att,
Osvaldo Filho.Sócio-fundador do i-TIC Digital Livre - Informação Livre para todos!Twitter i-TIC Digital Livre: @iticdigital
TUX-CE Member.
Técnico em Conectividade com Extensão em Desenvolvimento de Software - IFCE (Cefet).
Graduando em Telemática - IFCE (Cefet).
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Executar comando com o find.,, (continued)
- Re: [shell-script] Executar comando com o find.,, Osvaldo Filho, 2013/12/20
- Re: [shell-script] Executar comando com o find.,, Rodrigo Tenorio, 2013/12/20
- Re: [shell-script] Executar comando com o find.,, Osvaldo Filho, 2013/12/20
- Re: [shell-script] Executar comando com o find.,, Osvaldo Filho, 2013/12/20
- Executar comando com o find.,, Rodrigo Tenorio, 2013/12/20
- Re: [shell-script] Executar comando com o find.,, Julio C. Neves, 2013/12/20
- Re: Executar comando com o find.,, Rodrigo Tenorio, 2013/12/20
- Re: Executar comando com o find.,, Rodrigo Tenorio, 2013/12/20
- Re: [shell-script] Re: Executar comando com o find.,, Julio C. Neves, 2013/12/21
- Re: Executar comando com o find.,, Rodrigo Tenorio, 2013/12/21
- Re: [shell-script] Re: Executar comando com o find.,, Julio C. Neves <=
- Re: [shell-script] Executar comando com o find.,, Petterson Faria, 2013/12/21
- Prev by Date: Re: Executar comando com o find.,
- Next by Date: Re: [shell-script] Re: Executar comando com o find.,
- Previous by thread: Re: Executar comando com o find.,
- Next by thread: Re: [shell-script] Executar comando com o find.,
- Index(es):