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

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

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


From: Tiago Peczenyj
Subject: Re: [shell-script] Unir FIND+XARGS +CP ou MV num único comando
Date: Wed, 2 Feb 2011 11:58:09 -0200

vc ja tentou usar o find com -print0 quando combinado com xargs -0 ?

rode o xargs com echo na frente do cp na sua primeira tentativa e veja o que
pode estar acontecendo.

2011/2/2 Wagner Brasileiro <address@hidden>

>
>
> 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]
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


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



reply via email to

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