Como usar o comando find em linux

Video: Aula 013 - Localizar arquivos linux [Comando find]

A interface de linha de comando do Linux é um poderoso e flexível. O que torna tão são a coleção de ferramentas que fazem parte dela. Ferramentas como o grep, awk, encontrar, localizar, e assim por diante, tornar sua vida muito mais fácil quando você tem que encontrar arquivos, procurar algum texto em um arquivo ou substituir uma palavra por outra. Vamos olhar para o encontrar comando e veja como você pode usá-lo para melhorar o seu processo de pesquisa de linha de comando.

Na sua forma mais simples o comando find seria usado como este

# encontrar .
.helloworld.txt
.image01.jpg
.image02.jpg
.image03.jpg

Este comando irá dar-lhe uma lista de todos os arquivos e pastas no diretório atual. Cuidado que ele irá exibir todos os arquivos contidos em subpastas, bem como, de modo que a lista poderia ser muito longa. Bata a combinação de teclas Control + C para parar a exibição de mais arquivos.

Este é o uso mais simples do comando find. Usando uma combinação de alguns dos parâmetros do comando e expressões regulares que você pode fazer a busca por arquivos muito mais inteligentes. Por exemplo, se você quisesse encontrar todos os arquivos cujo nome começa com imagem execute o seguinte comando com base achado:

Video: Encontrar arquivos no Linux com find

# encontrar . imagem -name *

Aqui usamos o -nome parâmetro no achado para todos os nomes de arquivos que começam com a palavra imagem. Note-se que esta pesquisa é sensível a maiúsculas. Modifique o comando para # encontrar . imagem -iname * para obter resultados que não são maiúsculas de minúsculas.

Você pode, é claro, realizar pesquisas curinga para arquivos com uma determinada extensão. Para encontrar todos os arquivos contidos na pasta atual e subpastas com um .php extensão execute o seguinte comando, # encontrar . -name *. php. Você também pode executar pesquisas negativos. Por exemplo, se você deseja executar uma busca de todos os arquivos contidos em uma pasta e suas subpastas que não terminam com a extensão .php execute o comando # encontrar . ! -name “* .php”. Observe o ponto de exclamação que introduzimos para executar a pesquisa negativa. Isso pode ser usado para todas as outras opções também.



Uma das questões que muitas vezes enfrentam ao usar o comando find é que ele procura todas as subpastas por padrão. Às vezes você apenas quer que procurar em uma determinada pasta. Instruir a encontrar para fazer isso, você precisa usar o -profundidade máxima opção. Usando esta opção você pode dizer encontrar quantos níveis de sub-pastas que deve olhar ao executar sua pesquisa. Então, se você quer que ele procure por arquivos somente na atual conjunto pasta maxdepth a zero. O comando foi utilizado anteriormente para pesquisar todos os arquivos não PHP seria algo parecido com isso, se queríamos para executá-lo apenas na pasta atual - # encontrar . ! -name “* .php” -maxdepth 0. Aumentar o valor da maxdepth a um e mais quando você quiser aumentar a profundidade da pesquisa. Da mesma forma você também pode definir o -mindepth Se você quiser definir um limite superior para o nível de pastas pesquisadas. Você pode usar ambos em conjunto para executar uma pesquisa em pastas de nível inferior, sem a obtenção de resultados de outras pastas.

Pesquisa com outros critérios

Nós olhamos como a busca de arquivos usando o -nome opção. O comando find pode pesquisar com base em vários outros critérios também. Por exemplo, se você quiser encontrar todos os arquivos pertencentes a um determinado usuário usar o -do utilizador opção. Então, se você quiser encontrar todos os arquivos PHP de propriedade do stewie usuário em uma determinada pasta usar o comando, # encontrar . -name “* .php” -maxdepth 2 -user stewie.

Find silenciosa

Muitas vezes você pode estar usando o comando find em scripts shell. O comando se lança poucos erros. No entanto, quando você executá-lo como um usuário normal, existem erros de permissão relacionados que muitas vezes surgem. Por exemplo, se você fosse fazer uma pesquisa para o arquivo no diretório raiz como um usuário não raiz que você pode ver erros como : Permissão negada surgir. Isso pode ser bastante irritante quando usando o comando em um script. Embora o próprio comando find não parece ter uma solução para isso, podemos facilmente cair para trás em uma solução simples UNIX. Redirecionar todos os erros para o bom e velho / Dev / null. Assim, um comando como este:

# Find / -name Stewie Griffin *
/ Root: Permissão negada
/ Home / peterg: Permissão negada
/home/stewie/StewieGriffin-resume.doc

Seria convertido para

# Find / -name Stewie Griffin * 2gt; / dev / null
/home/stewie/StewieGriffin-resume.doc

Agora você pode usar com segurança o comando find em seus scripts, sem se preocupar com erros surgindo na saída.

Encontrar para pessoas preguiçosas

Eu sou um usuário Linux preguiçoso. Eu tenho certeza que existem muitos mais como me lá fora. Estou razoavelmente confortável com o comando grep. Embora achado tem várias opções muito úteis por si só encontro-me a usá-lo junto com grep muito frequentemente. A opção de tubo de UNIX faz isso muito fácil. Então, se eu quisesse procurar um arquivo contendo a palavra “web” Eu normalmente só executar uma pesquisa como esta, # encontrar . | grep web. Isto é o equivalente de # encontrar . web -name. Da mesma forma, se eu queria correr a mesma pesquisa, mas fazer com que ele não é mais sensível a maiúsculas, eu seria executado, # encontrar . | grep -i web. De maneira semelhante, você pode combinar o comando find com sed ou awk. A beleza da linha de comando Linux ou UNIX é que cada uma dessas ferramentas é muito poderoso. A chance de que você vai ter o tempo ou a necessidade de dominar todas elas é um pouco pequeno. Em vez disso, você é melhor para aprender uma ferramenta muito bem e ter uma idéia básica do resto, apenas no caso de você precisar deles.


Artigos relacionados