Inaugurando a nova seção (Comandos), com um breve post sobre  como procurar arquivos no Linux.

O find (man find) tem algumas coisas bem úteis. Por exemplo, você pode buscar por arquivos, por diretórios, por links simbólicos, pelo nome do arquivo sem diferenciar maiúsculas e minúsculas – lembrando que sistemas *NIX são case sensitive, etc.

A sintaxe do find é:

find caminho expressao

O caminho é onde você quer procurar, sendo relativo ou absoluto. Agora, com a expressão, podemos fazer as coisas legais. A expressão -type no diz de que tipo é o arquivos, veja:

find ./ -type f
find ./ -type d
find ./ -type l

Os três comandos acima buscariam, a partir do diretório em que você está, por arquivos, diretórios e links simbólicos, respectivamente.

Agora, para casar o tipo do arquivo com o nome, são usadas os parâmetros -name ou -iname (ignore case):

find ./ -name "nome" -type f
find ./ -iname "*nom?.backup" -type d

E aquele asterisco? E a interrogação? É possível utilizar os metacaractéres do shell. Isto, os wildcards, os coringas. Os mesmos que você usaria num ls da vida.

Suponhamos que você tem a seguinte estrutura de diretórios:

./a/d1
./a/d2
./a/d3
./b/d
./c/d1
./c/d2
./c/d3
./c/d4
./d/d
./e/

Os diretórios representados por letras são grupos, e dentro temos as categorias de cada grupo. O que eu preciso saber é quantas categorias (diretórios) de grupo existem, sem contar os diretórios dentro das categorias . E agora? Temos os parâmetros -mindepth e -maxdepth. Eles especificam o nível mínimo e máximo para realizar a busca. Neste caso:

find ./ -mindepth 2 -maxdepth 2 -type d

Explicando melhor:

  • o nível 0 casa com a linha de comando, ou seja, o ./
  • o nível 1 casa os nomes de grupo, como ./a e ./b
  • o nível 2 casa o que eu quero, que são as categorias, como ./a/1 e ./a/2
  • se usasse apenas o -mindepth 2, a busca continuaria dentro dos diretórios, porque eu disse apenas de onde queria começar a busca, e por isso o -maxdepth é necessário

Outras iterações virão em breve. Até ;)

Posts relacionados:

  1. Red Hat Enterprise Linux 5.4 direto do forno
  2. As Empresas Usam Linux
  3. Linux em Curitiba?
  4. Screen Scraping, Web Scraper, Screen Scraper, Data Scraping

No comments yet

Deixe Seu Comentário