Logotipo Dicas-L, por Ricardo Burile

Busca

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


 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

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

 

Formação de Analistas de Negócios

Assine a Lista Dicas-L

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

Publicar em del.icio.us

chmod, chown, chgrp, find e xargs

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 01 de Julho de 2007

Para alterar recursivamente a propriedade de uma árvore de diretórios para uma determinada pessoa e grupo, usamos o comando chown:

  chown -R queiroz:queiroz ~queiroz

O argumento queiroz:queiroz identifica o nome do usuário e o grupo ao qual pertence. Fornecer os dois argumentos é opcional, podemos especificar apenas o nome do usuário, como abaixo:

  chown -R queiroz ~queiroz

Caso queiramos trocar apenas a propriedade do grupo, o comando é outro, chgrp:

  chgrp -R queiroz ~queiroz

Até aqui tudo bem. Entretanto, frequentemente usamos os comandos chgrp e chown em conjunto com o comando xargs e find:

  find . -type d | xargs chown -R queiroz

Com o comando acima, pretendo alterar apenas a propriedade dos diretórios a partir de um determinado ponto. Se existir algum diretório com um nome que contenha espaços em branco, teremos problema.

  # find . -type d | xargs chown -R queiroz
  chown: impossível acessar `./Rubens': Arquivo ou diretório não encontrado
  chown: impossível acessar `Queiroz': Arquivo ou diretório não encontrado
  chown: impossível acessar `de': Arquivo ou diretório não encontrado
  chown: impossível acessar `Almeida': Arquivo ou diretório não encontrado
  chown: impossível acessar `./Rubens': Arquivo ou diretório não encontrado
  chown: impossível acessar `Queiroz': Arquivo ou diretório não encontrado
  chown: impossível acessar `de': Arquivo ou diretório não encontrado
  chown: impossível acessar `Almeida/Dia': Arquivo ou diretório não encontrado
  chown: impossível acessar `de': Arquivo ou diretório não encontrado
  chown: impossível acessar `Faxina': Arquivo ou diretório não encontrado

No exemplo acima eu criei dois diretórios com espaços em branco em seu nome: Rubens Queiroz de Almeida e Dia de Faxina. O comando xargs forneceu como entrada ao comando chown, as partes individuais dos nomes, levando em consideração o espaço em branco como delimitador do nome.

Para resolver este problema, precisamos informar ao comando xargs que o delimitador é outro:

  find . -type d -print0 | xargs -0 chown -R queiroz

A opção -print0 termina os nomes dos arquivos com um zero, de forma que os nomes de arquivos com espaços em branco sejam corretamente tratados. Da mesma forma, no comando xargs o argumento -0 indica que o separador do nome dos arquivos é o zero e não o espaço em branco.

O argumento -print é opcional. Versões antigas de sistemas Unix exigiam que fosse especificado no comando find. As versões modernas de sistemas GNU/Linux e FreeBSD não exigem sua especificação, a não ser em casos como acima, em que atribuimos um valor diferente do padrão ao delimitador do nome de arquivos.

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Referências Adicionais

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

Avalie esta dica

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

Avaliação: 3.1 /5 (532 votos)

Recomende este site
Recomendar este artigo


Versão para impressão


Opinião dos Leitores

Diego
29 Fev 2008, 10:03
Thiago, usando o xargs em vez do -exec o comando roda muito mais rápido. Faça o teste!
flipe
03 Jul 2007, 15:05
Muito bom isso ai cara, valeu pela dica.
Astronauta
02 Jul 2007, 07:51
Legal, mas cadê o chmod?

"Para alterar recursivamente a propriedade de uma árvore de diretórios para uma determinada pessoa e grupo, usamos o comando chmod:..."

Abraços
Thiago
01 Jul 2007, 15:22
Poderia ser usado a opção exec do find, deixando de utilizar o xargs.

find . -type d -exec chown -R queiroz {} \;
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Biblioteca

Redes - Guia Prático
Por Carlos. E. Morimoto

Hardware - o Guia Definitivo
Por Carlos. E. Morimoto

Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto

Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto

Certificação Linux
Por Uira Ribeiro

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan

Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan

Redes de Computadores
Por Andrew S. Tanembaum

O Segredo
Por Rhonda Byrne

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

MySQL - Guia do Programador
Por André Milani

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

Casais Inteligentes Enriquecem Juntos
Por Gustavo Cerbasi

Redes de Computadores: Curso Completo
Por Gabriel Torres

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Utilizando UML e Padrões
Por CRAIG LARMAN

Deus, um delírio
Por Richard Dawkins

Einstein : Sua Vida, Seu Universo
Por Walter Isaacson