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

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

Unir FIND+XARGS +CP ou MV num único comando


From: Wagner Brasileiro
Subject: Unir FIND+XARGS +CP ou MV num único comando
Date: Wed, 2 Feb 2011 03:55:28 -0800 (PST)

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]



reply via email to

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