Comando find [RESOLVIDO]

1. Comando find [RESOLVIDO]

Thiago
thvinicius

(usa Ubuntu)

Enviado em 02/12/2011 - 13:52h

Olá Pessoal!!! Sou novo no mundo linux conheço apenas a seis meses, estou tentando fazer um script para verificar se tem aquivos .txt dentro de uma pasta e coloca-las em outra.
Ex: quero copiar os arquivos .txt da pasta /home/usuário/teste/teste1/ para /home/usuário/teste/teste2/, se alguém puder me ajudar desde já agradeço.


  


2. MELHOR RESPOSTA

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 14:21h

Pode usar assim amigo:


# verifica dentro do /home/usario tudo que é txt e depois COPIA para o /tmp
find /home/usuario/ -type f -name '*.txt' -exec cp {} /tmp/ \;


Abs

3. Re: Comando find [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 14:00h


cp -R ~/teste/teste1/*.txt ~/teste/teste2/


Mini manual: (hehe)

cp = copia
-R = ativa modo recursivo
~ = aponta para a pasta do usuario
*.txt = todos os arquivos com extensão txt



4. Comando find

Thiago
thvinicius

(usa Ubuntu)

Enviado em 02/12/2011 - 14:17h

Vlw cara mas esqueci de colocar quero fazer isso usando o comando find



5. Re: Comando find [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 14:18h

Ta ai:


find ~/teste/teste1/ -name '*.txt' -type f -exec sh -c 'cp -f "$@" ~/teste/teste2/' X '{}' +


Mas na situação acho totalmente desnecessário...


6. Re: Comando find [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 14:27h

dimago escreveu:

Pode usar assim amigo:


# verifica dentro do /home/usario tudo que é txt e depois COPIA para o /tmp
find /home/usuario/ -type f -name '*.txt' -exec cp {} /tmp/ \;


Abs


Isso 'pode' causar alguns problemas com nomes com espaços, cuidado ai rs

Eu postei uma forma 'eficiente' de copiar arquivos com o find

Já que é pra complicar, então tem que complicar direito hehe



7. Re: Comando find [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 14:33h

Ueh..

nao entendi..
tenho arquivo com espaço aqui e nao tive problema.. (acabei de criar um Novo Teste.txt)

consegues nos dar um exemplo amigo?




mrk3004 escreveu:

dimago escreveu:

Pode usar assim amigo:


# verifica dentro do /home/usario tudo que é txt e depois COPIA para o /tmp
find /home/usuario/ -type f -name '*.txt' -exec cp {} /tmp/ \;


Abs


Isso 'pode' causar alguns problemas com nomes com espaços, cuidado ai rs

Eu postei uma forma 'eficiente' de copiar arquivos com o find

Já que é pra complicar, então tem que complicar direito hehe





8. Comando find

Thiago
thvinicius

(usa Ubuntu)

Enviado em 02/12/2011 - 14:43h

Seguinte usei o primeiro comando e apareceu assim:

root@thiago:/# cp -R ~/teste/teste1/*.txt ~/teste/teste2/
cp: impossível obter estado de `/root/teste/teste1/*.txt': Arquivo ou diretório não encontrado

daí eu tentei passar o caminho:

root@thiago:/# cp -R /home/thiago/teste/teste1/*.txt /home/thiago/teste/teste2/
cp: acessando `/home/thiago/teste/teste2/': Não é um diretório


e o segundo comando o find apareceu assim:

root@:thiago/# find ~/teste/teste1/ -name '*.txt' -type f -exec sh -c 'cp -f "$@" ~/teste/teste2/' X '{}' +
find: `/root/teste/teste1/': Arquivo ou diretório não encontrado

depois passando o caminho

root@thiago:/# find /home/thiago/teste/teste1/ -name '*.txt' -type f -exec sh -c 'cp -f "$@" /home/thiago/teste/teste2/' X '{}' +
find: `/home/thiago/teste/teste1/': Não é um diretório

E desculpa a ignorância esse comando vai ser pra colocar em um script para rodar no crontab.





9. existe?

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 14:45h

nao existe o diretorio /home/thiago/teste/teste1/

existe mesmo?



10. Re: Comando find [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 14:56h

@OFF TOPIC

dimago, Há uma diferença, embora pequena eu considero importante.

Vamos verificar! Crie a estrutura:

mkdir 1/1\ 1/ 2/2\ 2/
touch 1/1\ 1/1.txt 1/1\ 1/1\ 1.txt
touch 1/1\ 1.txt 1/1\ 1//.txt

depois copie o conteúdo da pasta 1/ para a pasta 2/2\ 2/
Faça com o seu comando, depois com o meu.

Veja os resultados e vai entender a diferença.

Isso também acontece com caracteres especiais que são usados pelo bash, como o $ e o @ por exemplo.




11. simmm

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 15:50h

oi mrk3004, fiz sim :)

esse é o meu resultado dentro da pasta

# pwd
/home/diego/teste/2/2 2
diego@inux:~/teste/2/2 2$ ls
1 1.txt 1.txt

eh, ele faz uma baita duma bagunça... realmente tem essa deficiencia, apesar de ter um caso assim de estrutura nao seja muito comum, mas com certeza existe..

Agora, veja se voce consegue me ajudar com minha dúvida sobre o find + total no forum :)

Abs




mrk3004 escreveu:

@OFF TOPIC

dimago, Há uma diferença, embora pequena eu considero importante.

Vamos verificar! Crie a estrutura:

mkdir 1/1\ 1/ 2/2\ 2/
touch 1/1\ 1/1.txt 1/1\ 1/1\ 1.txt
touch 1/1\ 1.txt 1/1\ 1//.txt

depois copie o conteúdo da pasta 1/ para a pasta 2/2\ 2/
Faça com o seu comando, depois com o meu.

Veja os resultados e vai entender a diferença.

Isso também acontece com caracteres especiais que são usados pelo bash, como o $ e o @ por exemplo.






12. resolvido

Thiago
thvinicius

(usa Ubuntu)

Enviado em 14/12/2011 - 10:45h

vlw galera pela ajuda usei o comando do dimago já que não vou ter que me preocupar com espaços fiz da seguinte forma:

find /home/thiago/testes/teste1/ -type f -name '*.txt' -exec cp {} /home/thiago/testes/teste2/ \;

Muito obrigado a todos!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts