shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Executar comando com o find.,


From: Rodrigo Tenorio
Subject: Re: Executar comando com o find.,
Date: Sat, 21 Dec 2013 16:01:12 -0200

Verdade! Fissurei no resto e esqueci de olhar para ele.
Assim que tiver um tempo vou testar.
Obrigado! :)

Em sábado, 21 de dezembro de 2013, Julio C. Neves escreveu:
 

Dei 3 bobeadas:
» O ls deveria ser ls -R ou find;
» Não sei de onde a minha cabeça pariu var. Tem de ser mp3 mesmo;
» Coloquei o eval no lugar errado. Teria de ser no sed

Abcs,
Julio
@juliobash
Facebook!? Not even if a cow coughs...
;)

Posso dar treinamento Shell em qualquer parte do país.
Me mande um e-mail para saber detalhes ou
echo 618921594007727281449002107776021103258914797578P | dc



Em 21 de dezembro de 2013 01:25, Rodrigo Tenorio <address@hidden> escreveu:
 

Compreendi o que você fez.

:)

Muito bom! Mas não deu certo.
:/
O caso do LS eu já falei...

Nessa linha: ogg=$(echo "${var//mp3/ogg}") troquei "var" por "mp3" e acrescentei um \" colado no "ogg".

E na ultima mexi nas expressões. Aproveitando que o paste criou colunas separadas por tabulação. Aí usei o "\t".
Ficou assim:

eval paste <(echo "$mp3") <(echo "$ogg") | sed 's|^|/usr/bin/avconv -y -i \"|; s|\t|\" -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 \"|'

Depois das modificações o resultado foi várias linhas de comando a serem executadas. Como essa:
/usr/bin/avconv -y -i "10 - sign of times.mp3" -acodec libvorbis -aq 3 -vn -ac 2 -b:a 320 -r:a 44100 "10 - sign of times.ogg"

Se tiver tempo compare o resultado com o antes e o depois.
:)

Bom, no final de tudo criou-se linhas com o comando mas a conversão não foi executada.



Em sexta-feira, 20 de dezembro de 2013, Rodrigo Tenorio escreveu:
É 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 Converter
find . -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 *.mp3
ls: não é possível acessar *.mp3: Arquivo ou diretório não encontrado

Acho que isso deve ser porque ordeno as coisas assim: Banda/Artista > Álbum > Música
Nã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
@juliobash
Facebook!? Not even if a cow coughs...
;)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]