Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Mais do find

Colaboração: Márcio C. M. Rezende

Data de Publicação: 16 de Maio de 2009

Dei uma buscada em dicas por aqui e não encontrei o que precisava: Como montar um archive cpio ignorando alguns arquivos ou diretórios?

A solução vem com o find. Ao contrário do que eu pensava, o parametro name, serve bem para isto.

Siga o exemplo:

  $ cd /tmp            # va para uma area traquila
  $ mkdir tst; cd tst  # crie uma região limpa e entre nela
  $ touch a b c d      # crie quatro arquivos
  $ ls                 # veja se estão lá
  a b c d
  $ # busque somente os diretorios  "b" e "d" e inclua no seu archive.cpio
  $ find -name "a" -o -name "c" -o print | cpio -o > archive.cpio

Por partes:

  1. O find busca os nomes a ou c caso contrario, IMPRIME na saída e o cpio faz o resto.

  2. A dica aqui é buscar justamente o que se quer evitar dentro do archive. O find gera as listas baseada no print e não no que foi finded (encontrado), como o senso comum nos levaria a crer.

  3. No lugar do a e c, use os nomes de arquivo e de diretórios que você deseje encontrar de fato

    Se usarmos nomes de diretórios e a cláusula -prune (logo após o nome do diretório), eliminamos o diretório e todo o seu conteúdo (da lista!).

    ==Ex 2 - (mais complexo):==
      $ cd /tmp/tst    # vá para a mesma area traquila
      $ ls             # veja se seus arquivos estão lá
      a b c d
      
      $ mkdir -p pasta/{e,f} # crie um diretorio novo com 2 novos subdiretorios
      $ find           # veja o conteúdo
      .
      ./a
      ./d
      ./c
      ./b
      ./pasta
      ./pasta/f
      ./pasta/e
      
      $ # busque somente os diretorios  "b" e "d" e exclua a pasta "e", existente no subdir "pasta"
      $ find -name "a" \
           -o -name "c" \
           -o -name "e" -prune \
           -o -print | cpio -o > archive.cpio
      $ cpio -t < archive.cpio # liste o conteudo do novo archive
      .
      d
      b
      pasta
      pasta/f
      archive.cpio
      1 block
    
    Perceba que a pasta e (e todo o conteudo se houvesse ) ficou de fora assim como os arquvios a e c

Visite o meu blog: http://marzvix.wordpress.com

Veja a relação completa dos artigos de Márcio C. M. Rezende

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.98/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1045 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis