Encontre arquivos e diretórios no Linux com o comando find | Opensource.com

independentemente de quão organizado eu resolvo ser, parece que sempre há momentos em que simplesmente não consigo localizar um arquivo. Às vezes é porque não consigo lembrar o nome do arquivo em primeiro lugar. Outras vezes, eu sei o nome, mas não me lembro onde decidi salvá-lo. Há até momentos em que preciso de um arquivo que não criei em primeiro lugar. Não importa o que o dilema, no entanto, eu sei que em um sistema POSIX, eu sempre tenho o comando find.

instalando find

o comando find é definido pela especificação POSIX, que cria o padrão aberto pelo qual os sistemas POSIX (incluindo Linux, BSD e macOS) são medidos. Simplificando, você já tem find instalado, desde que esteja executando Linux, BSD ou macOS.

no entanto, nem todos os comandos find são exatamente iguais. O comando GNU find, por exemplo, possui recursos que o comando BSD ou Busybox ou Solaris find pode não ter ou não ter, mas implementa de maneira diferente. Este artigo usa GNU find do pacote findutils porque está prontamente disponível e bastante popular. A maioria dos comandos demonstrados neste artigo funciona com outras implementações de find, mas você deve tentar um comando em uma plataforma diferente do Linux e obter resultados inesperados, tentar baixar e instalar a versão GNU.

encontre um arquivo pelo nome

você pode localizar um arquivo pelo nome do arquivo fornecendo o nome completo do arquivo ou partes do nome do arquivo usando expressões regulares. O comando find requer o caminho para o diretório em que você deseja pesquisar, opções para especificar qual atributo você está procurando (por exemplo, –name para um nome de arquivo sensível a maiúsculas e minúsculas) e, em seguida, a string de pesquisa. Por padrão, sua string de pesquisa é tratada literalmente 😮 comando find procura um nome de arquivo que seja exatamente a string que você insere entre aspas, a menos que você use a sintaxe de expressão regular.

suponha que seu diretório de documentos contenha quatro arquivos: Foo, foo, foobar.txt, e foo.xml. Aqui está uma busca literal por um arquivo com o nome”foo”:

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

Você pode ampliar sua pesquisa, tornando-a insensível a maiúsculas e minúsculas com a -iname opção:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Curingas

Você pode usar o shell básico caracteres curinga para alargar a sua pesquisa. Por exemplo, o asterisco (*) representa qualquer número de caracteres:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Um ponto de interrogação (?) representa um único caractere:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Esta não é a sintaxe de expressões regulares, de modo que o ponto (.) representa um literal de ponto neste exemplo.

expressões Regulares

Você também pode usar expressões regulares. Tal como acontece com -iname e -name, há uma opção case-sensitive e case-insensitive. Ao contrário das opções -name e -iname, no entanto, uma pesquisa -regex e -iregex é aplicada a todo o caminho, não apenas ao nome do arquivo. Isso significa que se você pesquisar por foo, não obterá resultados porque foo não corresponde a /home/tux/Documents/foo. Em vez disso, você deve procurar o caminho inteiro ou usar uma sequência curinga no início da string:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Localizar um arquivo modificado na última semana

Para localizar um ficheiro última modificação última semana, use -mtime opção, juntamente com a (negativo) número de dias no passado:

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Encontrar um arquivo modificado dentro de um intervalo de dias

Você pode combinar -mtime opções para localizar um arquivo dentro de um intervalo de dias. Para o primeiro argumento -mtime, forneça o número mais recente de dias em que você poderia ter modificado o arquivo e, para o segundo, forneça o maior número de dias. Por exemplo, esta pesquisa procura por arquivos com a modificação vezes mais do que um dia no passado, mas não mais do que sete:

$ find ~ -mtime +1 -mtime -7

Limite de uma busca por tipo de arquivo

É comum para otimizar os resultados de find especificando o tipo de arquivo que você está procurando. Você não deve usar essa opção se não tiver certeza do que está procurando, mas se souber que está procurando um arquivo e não um diretório, ou um diretório, mas não um arquivo, esse pode ser um ótimo filtro para usar. A opção é -type, e seus argumentos são um código de letra que representa alguns tipos diferentes de dados. Os mais comuns são:

  • d – diretório
  • f – arquivo
  • l – link simbólico
  • s – soquete
  • p – pipe nomeado (usado para FIFO)
  • b – bloco especial (normalmente um disco rígido designação)

Aqui estão alguns exemplos:

$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

Ajuste o espaço

O find comando é recursivo por padrão, o que significa que ele procura resulta em diretórios de diretórios contidos em diretórios (e assim por diante). Este pode ser um peso esmagador em um grande sistema de arquivos, mas você pode usar o -maxdepth opção para controlar a forma como profunda em sua estrutura de pastas que você deseja find para descer:

$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15

como alternativa, Você pode definir a profundidade de recursão com -mindepth:

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

Baixar o cheat sheet

Este artigo abrange apenas as funções básicas de find. É uma ótima ferramenta para pesquisar em seu sistema, mas também é um front-end realmente útil para o poderoso comando paralelo. Há muitas razões para aprender find , então baixe nossa folha de dicas gratuita find para ajudá-lo a aprender mais sobre o comando.

Leave a Reply