você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito: Os Segredos do Shell, com o Prof. Julio Neves

find - limitando o escopo da busca

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 12 de novembro de 2014

Algumas vezes, quando usamos o comando find, precisamos limitar o escopo da busca na árvore de diretórios. Isto pode ser feito especificando os parâmetros maxdepth e mindepth. Vejamos alguns exemplos:

find . -name passwd -maxdepth 2

O comando acima irá procurar por arquivos de nome passwd no diretório corrente e nos diretórios que estão um nível abaixo. O número 1 se aplica ao diretório corrente e o número 2 indica um nível abaixo:

dir 1 - diretório corrente (maxdepth=1) → dir 2 (maxdepth=2) → dir 3 (maxdepth=3) etc.

Vamos criar um ambiente de testes para explicar melhor:

mkdir -p a/b/c/d/e/f/g/h

for dir in `find . -type d`
do
  touch $dir/passwd
done

Criei com os comandos acima uma árvore de diretórios e em seguida criei, em cada um dos diretórios, um arquivo vazio chamado passwd.

find . -maxdepth 1 -name passwd
./passwd

No exemplo acima, a busca se limita ao diretório corrente.

find . -maxdepth 5 -name passwd
./a/b/passwd
./a/b/c/d/passwd
./a/b/c/passwd
./a/passwd
./passwd

Com o uso da diretiva mindepth podemos sofisticar ainda mais a nossa busca:

find . -maxdepth 5 -mindepth 3 -name passwd
./a/b/passwd
./a/b/c/d/passwd
./a/b/c/passwd

Esta busca irá começar a partir do nível 3 (a/b) e irá apenas até o nível 5 (a/b/c/d/). Importante lembrar que a contagem sempre se inicia no diretório corrente.



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