pipe e cp

1. pipe e cp

Felipe
FLP5

(usa Debian)

Enviado em 06/06/2011 - 17:24h

Olá pessoal do VOL,
Estou precisando criar um script que copie arquivos para um diretório da segunte forma:
todo arquivo que tem o 'PIPE' no nome deve ser copiado para o diretório /home/pipe/
querendo usar o script da seguinte forma
find | grep pipe | cp /home/pipe/;
No entanto está havendo problema no uso de | e cp. O script não faz o esperado. Creio que porque | direciona a saída para o início do comando e eu gostaria que ele ficasse como primeiro parametro (origem) de cp.
Alguém tem uma dica do que posso fazer pra resolver isso?


  


2. Re: pipe e cp

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 07/06/2011 - 12:51h

Cara, eu faria assim:

find -type f -name '*pipe*' -exec cp {} /home/pipe/ \;


3. Re: pipe e cp

Felipe
FLP5

(usa Debian)

Enviado em 07/06/2011 - 21:13h

find: faltando argumento para `-exec'

Cara, eu sou iniciante ainda, você pode me descrever o que seu script faria [parâmetros]?


4. Re: pipe e cp

Jefferson Diego
Diede

(usa Debian)

Enviado em 07/06/2011 - 23:04h

Até o grep tudo bem, mas o cp necessita argumento.
O que você pode fazer é algo assim:
find | grep pipe| while read arquivo; do cp $arquivo /home/pipe/; done


5. Re: pipe e cp

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 08/06/2011 - 11:10h

É ... realmente parece que o comando é diferente dependendo do SO.

No Debian funciona bem o comando:

find -type f -name '*pipe*' -exec cp {} /home/pipe/ \;

-type f => tipo de arquivo, apenas arquivos ... ignora diretorios
-name '*pipe*' => nome do arquivo
-exec => executa o comando a seguir
cp {} /home/pipe/ => copia o resultado do find (por isso o {}) para o diretório /home/pipe/
\; => fecha comando ... é obrigatorio

No solaris eu precisei colocar o ".", se não dá erro.
find . -name '*pipe*' -type f -exec cp {} /home/pipe/ \;

Agora na sua distro eu não tenho nenhuma maquina pra testar, da uma olhada no man.
O loop proposto não é uma má idéia, também funciona, ... mas serão 3 comandos ... find ... grep ... cp, pela lógica vai demorar um pouco mais, mas vai funcionar muito bem.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts