[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] concatenar arquivos
From: |
Gustavo Chaves |
Subject: |
Re: [shell-script] concatenar arquivos |
Date: |
23 Apr 2005 19:09:19 -0300 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
>>>>> On Fri, 22 Apr 2005 22:29:57 -0300 (BRST), Felipe Kellermann
>>>>> <address@hidden> said:
> Eu gostaria de entender o motivo de as pessoas gostarem tanto de fazer as
> misturas de find com grep e xargs e etc. Esse combo não deveria existir há
> um bom tempo, ou deveria ser um pouco menos utilizado :-)
Considerando apenas o poder dos globs tradicionais (*, ? e []), creio
que estes sejam alguns bons motivos:
- O find não serve apenas para buscar arquivos por nome, mas também
por vários outros atributos, como tamanho, idade, dono, grupo e
qualquer outra meta-informação que você possa obter do inode do
arquivo.
- O find procura arquivos recursivamente em uma árvore de diretórios
sem que se precise especificar sua profundidade.
- O find permite que você imponha limites na recursão da busca em
função da profundidade da árvore (-maxdepth) e de qualquer atributo
encontrado num diretório (-prune).
- O find permite que você especifique filtros para os nomes dos
arquivos usando globs (na opção -name), mas, como globs são menos
poderosos que expressões regulares em geral, algumas vezes é
conveniente acoplar um grep à saída do find para melhor especificar
o filtro.
- Como eu já mencionaei algumas mensagens atrás, se o resultado da
expansão de um glob for muito grande, corre-se o risco de esbarrar
no limite de tamanho de linha suportado por uma shell ou do tamanho
dos argumentos de um processo que pode ser criado pelo kernel. Por
isso o xargs...
> Qualquer shell relativamente nova faz um bom uso de globs. Não há nada que
> seja feito com find (mais grep, xargs, etc) que não possa ser feito só com
> um glob.
Globs tradicionais são muito pobres pra competir. Algumas shells
implementam algumas extensões que os tornam mais poderosos, como os
operadores *(), +(), ?(), @() e !(). (Na bash é preciso definir a
variável "extglob" pra que as extensões sejam processadas como tal.)
Mas mesmo assim, o resultado não é tão poderoso quanto uma expressão
regular de um egrep ou de um sed. (Na pdksh, por exemplo, um '/'
não funciona dentro de um '[]', de modo que não dá pra simular a busca
recursiva.)
Mas eu acho que, mesmo que alguma shell implemente estas e outras
extensões de modo que tenhamos o poder geral de uma expressão regular,
é preciso pensar duas vezes antes de usá-las se você estiver
preocupado com portabilidade.
Gustavo.
- Re: [shell-script] concatenar arquivos, (continued)
- Re: [shell-script] concatenar arquivos, Felipe Kellermann, 2005/04/21
- Re: [shell-script] concatenar arquivos, Gustavo Chaves, 2005/04/21
- Re: [shell-script] concatenar arquivos, Felipe Kellermann, 2005/04/21
- Re: [shell-script] concatenar arquivos, Gustavo Chaves, 2005/04/22
- Re: [shell-script] concatenar arquivos, Emerson Domingues Souto, 2005/04/22
- Re: [shell-script] concatenar arquivos, Gustavo Chaves, 2005/04/22
- Re: [shell-script] concatenar arquivos, Emerson Domingues Souto, 2005/04/22
- Re: [shell-script] concatenar arquivos, Gustavo Chaves, 2005/04/22
- Re: [shell-script] concatenar arquivos, Emerson Domingues Souto, 2005/04/22
- Re: [shell-script] concatenar arquivos, Felipe Kellermann, 2005/04/22
- Re: [shell-script] concatenar arquivos,
Gustavo Chaves <=
- Re: [shell-script] concatenar arquivos, Felipe Kellermann, 2005/04/23
- Re: [shell-script] concatenar arquivos, Felipe Kellermann, 2005/04/22