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

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

Res: Res: [shell-script] Unir FIND+XARGS +CP ou MV num único comando


From: Wagner Brasileiro
Subject: Res: Res: [shell-script] Unir FIND+XARGS +CP ou MV num único comando
Date: Wed, 2 Feb 2011 05:32:55 -0800 (PST)

Caros amigos

encontrei meu erro e estou postando com o intuito de esclarecer o problema que 
criei. A seguinte construção resolveu meu problema:

find MP3-TMP/ -type f -name "*.mp3" | xargs -d '\n'  -I  '{}' -s500 cp '{}' 
~/teste

onde, o -s500 resolveu meu problema de argumentos caso tivesse, um erro 
relatado 
no MAN do XARGS referente ao uso da opção "-I"

Mas o maior erro mesmo localizei analisando a saída com o comando echo ao invés 
do cp ou mv, ele estava me retornando uma única linha sem espaços após ter 
usado 
a opção -0 do xargs, se não a usasse ele dava erro por causa dos caracteres 
estranhos contidos nos nomes dos arquivos, mesmo quando usei por algumas vezes 
o 
erro persistiu e depois fui ver que precisava "escapar"o /n e aí funcionou.
Um erro raro, se estivesse trabalhando com nomes de arquivos comuns sem espaços 
e caracteres especiais, certamente esse erro não ocorreria e não teria 
aprendido 
mais essa, pois lembrava que já havia utilizado essa estrutura anteriormente 
sem 
mistérios.





________________________________
De: Wagner Brasileiro <address@hidden>
Para: address@hidden
Enviadas: Quarta-feira, 2 de Fevereiro de 2011 10:37:45
Assunto: Res: [shell-script] Unir FIND+XARGS +CP ou MV num único comando

  
Só rindo mesmo!!! Não é que funcionou perfeitamente!!!

Estava fugindo desta construção justamente por saber do problema de estouro de 
pilha quando se passa muitos argumentos ao exec do find, e no meu caso estou 
falando de 382.

Bem agradeço pela idéia, mas sabe dizer o que estava acontecendo, ou onde 
estava 

errando? Quem souber por favor me diga.

Espero que os moderadores não encarem isso como abuso ou algo parecido, 
gostaria 

de entender o que estava acontecendo.

Atenciosamente,

Wagner Brasileiro

________________________________
De: "®i©@®ÐØ" <address@hidden>
Para: address@hidden
Enviadas: Quarta-feira, 2 de Fevereiro de 2011 10:14:51
Assunto: Re: [shell-script] Unir FIND+XARGS +CP ou MV num único comando

se puder ser somente com um comando, que tal:

find MP3-TMP/ -type f -name "*.mp3" -exec cp -pv {} ~/resultado/ \;

;)

Em 2 de fevereiro de 2011 09:55, Wagner Brasileiro <
address@hidden> escreveu:

>
>
> Bom dia Senhores,
>
> estou tentando construir uma linha de comando que facilite minha vida,
> tenho um
> diretório com uma estrutura de subdiretórios criados onde existem arquivos
> MP3
> organizados por nome da banda, nome do disco e e por último os arquivos
> propriamente dito. O que eu pretendo é ler esses arquivos em sua estrutura
> de
> subdiretórios como find, repassar esses nomes como par6ametros pelo xargs
> ao cp
> e pronto. Parece simples e eu creio que já fiz isso algumas vezes com
> arquivos
> simples, mas neste caso tenho caracteres estranhos nos nomes dos arquivos
> como
> espaços, apóstrofes e parênteses e ainda por cima a lista está parecendo
> maior
> do que o xargs suporta, Já com os caracteres especiais nem sei como ele
> está
> tratando isso, normalmente quando uso as opções d -0 ou -r do xargs as
> mensagens
> de erro referentes a esses caracteres somem.
> Um dos problemas que encontrei foi os espaços entre os nomes dos arquivos
> onde
> tive que usar ou a Opção -0 do xargs ou -r. Já o comando cp sempre dá
> estouro
> quando uso essas opções, me retornando: "Nome de arquivo muito longo" Já
> tentei
> "escapar"parte da expressão para ver se ele estava tentando usar tudo como
> um
> único arquivo.
>
> Dentre as diversas tentativas que fiz as que mais me pareceram corretas e
> mesmo
> assim deram erradas foram:
>
> find MP3-TMP/ -type f -name "*.mp3" | xargs -0 -r cp -v -p
> --target-directory=/root/resultado
>
> find MP3-TMP/ -type f -name "*.mp3" | xargs -0 -I {} mv {} ~/resultado/
>
> find MP3-TMP/ -type f -name "*.mp3" | xargs -r -0 -i bash -c "cp {}
> ~/resultado/" ==> Já essa linha me dá dois tipos de erros diferentes, alega
> em
> vários arquivos que não foram encontrados, analisando a linha de saída com
> um
> simples echo, percebi que são justamente os arquivos que possuem caracteres
>
> especiais, mas engraçado que na linha 74 ele me dá a seguinte mensagem:
>
> bash: -c: linha 74: erro de sintaxe próximo do `token' não esperado `('
> bash: -c: linha 74: `MP3-TMP/Phil Collins/Serious Hits...Live!/02 Against
> All
> Odds (Take a Look at Me Now).mp3'
>
> Sendo que ele já passou por outros arquivos a esta altura com parênteses e
> outros caracteres especiais. termina o comando e sai sem copiar um arquivo
> sequer.
>
> Acredito que esteja errando algo bobo, ou se realmente for estouro da pilha
> de
> argumentos existe como acertar isso? Fico grato por qualquer ajuda.
>
> Wagner Brasileiro
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

-- 
----------------------------------------------------------

ATENÇÃO: EVITE QUE SPAMMERS CAPTURE CONTATOS DE SUA LISTA,
SEMPRE QUE POSSÍVEL  REMOVA OS EMAILS DO REMETENTE E ENVIE EM (COO- CÓpia
Oculta) PARA SEUS CONTATOS.
;)

A Graça do nosso Senhor Jesus Cristo seja contigo. (1ªTs 5.28)
The grace of our Lord Jesus Christ be with you.  (1ªTs 5.28)
Jesus te ama, aceite-O! Jesus loves you, accept you Him!

®i©@®ÐØ

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

----------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, 

C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
----------------------------------------------------------
Sair da lista: address@hidden
----------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
----------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos

[As partes desta mensagem que não continham texto foram removidas]


 


      

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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