[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]
- Unir FIND+XARGS +CP ou MV num único comando,
Wagner Brasileiro <=