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