Existe alguma maneira de evitar que o find pesquise recursivamente em subdiretórios?
Pergunta
Quando eu faço:
$ find /
Ele pesquisa todo o sistema.
Como posso evitar isso?
(Esta pergunta vem de um "responder"para outra pergunta.)
Solução
Bom dia,
Só queria expandir a sugestão de Jon de usar -prune.Não é a opção de localização mais fácil de usar, por exemplo, apenas pesquisar no diretório atual, o comando find se parece com:
find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)
isso impedirá que find desça para subdiretórios dentro deste diretório.
Basicamente, diz: "podar qualquer coisa que seja um diretório, cujo nome não seja ".", ou seja,diretório atual."
O comando find avalia da esquerda para a direita para cada item encontrado no diretório atual, após a conclusão do primeiro elemento, ou seja,o segmento de remoção, ele continuará com o item correspondente em sua segunda expressão -o (OR).
HTH.
Saúde, Rob
Outras dicas
Considerar:
-maxdepth n
True if the depth of the current file into the tree is less than
or equal to n.
-mindepth n
True if the depth of the current file into the tree is greater
than or equal to n.
Talvez seja melhor usar curingas.Por exemplo, se você quiser encontrar todos os scripts ksh no diretório atual:
$ ls *.ksh
Use o -ameixa seca opção.
Você pode até fazer
echo /specific/dir/*.jpg
pois é o seu shell que expande o curinga.Digitando
ls *.jpg
equivale a digitar
ls foo.jpg bar.jpg
dados foo.jpg e bar.jpg são todos os arquivos que terminam com ".jpg" no diretório atual.