script mixagem [RESOLVIDO]

1. script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 06/05/2008 - 18:10h

Bom consegui fazer um script pare realizar isto: ah uma pasta com arquivos como por exemplo

#!/bin/sh
find *.gsm # verifica se os arquivos existem

SOX=/usr/bin/sox
soxmix=/usr/bin/soxmix
#Executa o SOX para juntar os dois arquivos (IN e OUT) em apenas um arquivo

$soxmix arquivo1-in.gsm arquivo1-out.gsm arquivo.1.gsm
$soxmix arquivo2-in.gsm arquivo2-out.gsm arquivo.2.gsm
$soxmix arquivo3-in.gsm arquivo3-out.gsm arquivo.3.gsm
echo $(sox)
Com isto eu pegaria o arquivo1-in o de entrada e mixava com o arquivo1.out de saida virando um só arquivo o arquivo1.gsm
mas desta maneira tenho que acrescentar sempre ao script o nome dos arquivos, se por exemplo fosse uma pasta com 50 arquivos ficaria complicado, como posso fazer isto automaticamente? apenas rodar o script, e independente de quantos arquivos possuir a pasta, ele mixar?


  


2. MELHOR RESPOSTA

André Vitor Matos
andre.vmatos

(usa Arch Linux)

Enviado em 09/05/2008 - 21:25h

Hmm, eu axava que no servidor sempre entravam um arquivo in e um arquivo out. Então, é só colocar uma verificação. Axo que o script final ficaria assim:

> for i in `ls *in.gsm`; do
> if [ -f "$( echo $i | sed 's|in.gsm|out.gsm|g' )" ]
> then
> soxmix "$i" "$( echo $i | sed 's|in.gsm|out.gsm|g' )" "$( echo $i | sed 's|-in.gsm|.gsm|g' )
> rm -f "$i" "$( echo $i | sed 's|in.gsm|out.gsm|g' )"
> fi
> done

Ou seja, ele pega todos os arquivos terminados em in.gsm, verifica se existe o correspondente out.gsm e, se houver, ele mixa os dois e remove os dois usados na mixagem. Se nao houver, ele não faz nada, mas pode adicionar um else depois, para o caso de não haver o out. Vou passar uma nova "versão" do script, usando variáveis, pq colocando os seds direto no comando ficou meio bagunçado, então, ai vai:

for i in `ls *in.gsm`; do
IN="$i"
OUT="$( echo $i | sed 's|in.gsm|out.gsm|g' )"
CAT="$( echo $i | sed 's|-in.gsm|.gsm|g' )

if [ -f "$OUT" ]
then
soxmix "$IN" "$OUT" "$CAT"
rm -f "$IN" "$OUT"
else
mv "$IN" "$CAT"
fi
done

Eu jah coloquei o else ai, nao sei direito o seu problema, mas se for o que eu to pensando, então vc deve querer que, caso não exista o arquivo OUT, ele tome como o arquivo final (CAT) o arquivo IN. Sugiro que vc coloque para mover os arquivos finais para uma outra pasta, mas isso vc sabe fazer =]
Qualquer dúvida, só perguntar, vou continuar acompanhando o tópico, até vc colocar ele como finalizado, ok? Flwsss

3. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 06/05/2008 - 23:24h

alguem pode da uma força ae?


4. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 07/05/2008 - 01:12h

alguem?


5. Parâmetros

José Lopes
forkd

(usa Debian)

Enviado em 07/05/2008 - 08:40h

Verifique passagem de parâmetros para o script. Você encontrará isto num tutorial sobre shell script. Você vai usar, provavelmente variáveis $1, $2,..., $#... Ou um laço FOR pra executar todos os parâmetros passados.
Agora é contigo!
PS: O site do Aurélio Marinho tem ótimas dicas e apostilas sobre shell script.



6. Re: script mixagem [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 07/05/2008 - 09:21h

Os melhores "tutos" disponíveis na net:

Básico:
http://tldp.org/LDP/Bash-Beginners-Guide/html/

Avançado:
http://tldp.org/LDP/abs/html/

Esses eu "agarântio"!
=)



7. Re: script mixagem [RESOLVIDO]

Lame Duck
lame_duck_hat

(usa Outra)

Enviado em 07/05/2008 - 09:59h

Aparentemente é complicado, depende principalmente de:

Os arquivos SEMPRE será "arquivoNUMERO-in.gsm arquivoNUMERO-out.gsm arquivo.NUMERO.gsm". ou pode ocorrer deles terem outro nome?

Se for sempre igual da pra usar um FOR:

NUMERO=$1;
for ((x=1;x<=$NUMERO;x++));
do
soxmix arquivo${NUMERO}-in.gsm arquivo${NUMERO}-out.gsm arquivo.${NUMERO}.gsm
done

daí para chamar o script você precisaria usar:
./nome_script numero_de_arquivos_da_pasta

exemplo:
./nome_script 5

o comando $1 pega o número digitado no terminal ( nesse exemplo 5 ) e envia armazena em "NUMERO".

para entender melhor entre em:
http://www.patinho.net/tutorial.php

E leia sobre o comando FOR.
Abraços


8. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 07/05/2008 - 22:01h

bah galera vlw ai eu encontrei um for e adaptei ele a minha necessida, tmb estou lendo ainda de shell script e for dexei meu script automatico ele tem uma variavel que indica o caminho da pasta que vou mixar os arquivos assim eu uso ele de qualquer lugar do meu computador e funciona, tabem criei outra variavel que faz um backup copia os arquivo in.gsm e out.gsm para uma outra pasta, mas gostaria de saber uma coisa depois do for eu estava deletando os arquivo in.gsm e out.gsm deixando apenas os arquivos ja mixados na pasta, mas o problema e que nesta pasta em um servidor entra constantemente arquivos entao usando rm *in.gsm por exemplo eu poderia apagar um arquivo que nem foi mixado ainda, gostaria de saber como fazer mais ou menos assim, se o arquivoin.gsm e out.gsm ja foi mixado pode deletar, se ainda nao foi mixado nao deve ser deletado, alguem pode ajudar?


9. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 08/05/2008 - 08:24h

alguem?


10. Re: script mixagem [RESOLVIDO]

Lame Duck
lame_duck_hat

(usa Outra)

Enviado em 08/05/2008 - 08:44h

apague o arquivo assim que ele for mixado

NUMERO=$1;
for ((x=1;x<=$NUMERO;x++));
do
soxmix arquivo${NUMERO}-in.gsm arquivo${NUMERO}-out.gsm arquivo.${NUMERO}.gsm
rm arquivo${NUMERO}-in.gsm arquivo${NUMERO}-out.gsm
done


11. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 08/05/2008 - 13:31h

cara mais tipo meu for esta assim, ele faz tudo automatico eu vou em qualquer diretorio e independendo dos nomes dos arquivos ele mixa para mim, porem preciso deletar o que esta mixado, so o que esta mixado estava pensando em usar um if mais nao sei como continuar apos o igual ja tentei muita coisa, obs cada diretorio que o script vai se usado contem +- 2000 arquivos e estrando constantemente mais arquivo in e out por isso so deletar o que foi mixado, sao mixados um arquivo in.gsm e outro out.gsm que contenham o mesmo nome
for i in `ls | grep "\-in.gsm"`;
do $soxmix $i `basename $i in.gsm`out.gsm `basename $i -in.gsm`.gsm;

este e meu for.


12. Re: script mixagem [RESOLVIDO]

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 08/05/2008 - 17:01h

alguem?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts