Bip-bip-bip...computando...computando...iniciando sequência 42...
Parece que aqueles robôs malucos estão aprontando de novo! Eles "invadiram" o site e traduziram esta página para o seu idioma. Seus coraçõezinhos de metal tinham as melhores intenções. Eles só queriam ajudar! Use os botões na parte inferior da página para nos contar se os robôs estão fazendo um bom trabalho. Ir para Versão em Inglês

Como encontrar arquivos em Linux

Lembrar onde um arquivo específico está localizado em sua instalação Linux pode ser difícil e manualmente pesquisando uma grande árvore é um processo muito cansativo. Portanto, como fazer pesquisas em Linux? Felizmente, Linux oferece algumas ferramentas muito fácil de usar para encontrar arquivos em toda a sua distribuição inteira.

DIFICULDADE EM Basic - 1 | Médio - 2 | Avançado: 3
TEMPO NECESSÁRIO 15 min
PRODUTOS RELACIONADOS Servidores dedicados ou VPS baseadas em Linux
Baseadas em Linux hospedagem compartilhada com SSH ativado

Como encontrar arquivos em Linux

O comando Localizar é a ferramenta principal usada para localizar arquivos em qualquer lugar em sua máquina. Básico de no máximo, encontre é executado usando a seguinte sintaxe:

find [path] [flags]

path e flags são ambos opcional, então por padrão localizar será recursiva retorno o caminho de todos os arquivos dentro da pasta atual e subdiretórios:

./.bashrc
./.ssh
./.ssh/authorized_keys
./.monit.state
./.aptitude
./.aptitude/cache
./.aptitude/config
./.profile
./.psql_history
./.gem
...

Como encontrar o nome

Procurar arquivos com o uso de um determinado nome a -name sinalizador seguido o texto de pesquisa. Por exemplo:

find -name foo
./misc/foo

Que encontra todos os arquivos no diretório atual com o nome exato foo. Nesse caso ele encontrado somente um arquivo no meu diretório de diversos. Usando o -iname em vez disso, o sinalizador usa uma pesquisa diferencia maiusculas de minúsculas:

find -iname FoO
./misc/foo

Usando um asterisco (*) permite que você pesquisar usando caracteres curinga:

find -name foo*
./misc/foobar.txt
./misc/foobar.sh
./misc/foo
./misc/foobar

Encontrar por local

Pesquisando fora do diretório atual frequentemente é obrigatório e facilmente pode ser realizado usando a opção de caminho imediatamente após o comando Localizar.

Por exemplo, para procurar arquivos em todo o sistema, use um / path opção:

find / -name foo*
/root/misc/foobar.txt
/root/misc/foobar.sh
/root/misc/foo
/root/misc/foobar
/usr/lib/node_modules/npm/node_modules/semver/foot.js
/usr/share/automake-1.14/am/footer.am
/usr/share/doc/xml-core/examples/foo.postrm
...

Você pode restringir o caminho de pesquisa para baixo conforme necessário, nesse caso encontrar os arquivos mesmos localizados dentro do diretório de raiz/diversos:

find ~/misc -name foo*
/root/misc/foobar.txt
/root/misc/foobar.sh
/root/misc/foo
/root/misc/foobar

Você pode usar até mesmo vários paths em seu comando para pesquisar em dois ou mais locais específicos. Aqui nós estão pesquisando o raiz/diversos e os diretórios /usr/share/doc:

find ~/misc /usr/share/doc -name foo*
/root/misc/foobar.txt
/root/misc/foobar.sh
/root/misc/foo
/root/misc/foobar
/usr/share/doc/xml-core/examples/foo.postrm
/usr/share/doc/xml-core/examples/foo.xmlcatalogs
/usr/share/doc/xml-core/examples/foo.postinst
/usr/share/doc/xml-core/examples/foo.prerm
/usr/share/doc/m4/examples/foo

Encontrar por tipo

Outro sinalizador comum para restringir sua pesquisa -type, que permite que você encontre arquivos com base nos identificadores com base no Unix associados a todos os arquivos.

Por exemplo, você pode usar o -type d Sinalizador para procurar somente os diretórios que correspondem aos seus critérios:

find / -type d -name foo*
/root/misc/foobar

A lista completa de identificadores usados para seguir o -type sinalizador pode ser encontrado em a página de man, mas alguns dos mais comuns são:

  • -type d de diretórios
  • -type f para arquivos
  • -type l para links simbólicos

Localizar por hora

Procurando arquivos com base no tempo que eles foram criados ou modificados pode ser uma ferramenta muito útil para analisar logs ou mudanças em um diretório específico.

Há três categorias de comandos de pesquisa baseada na hora: modificação, alteração e acesso. Todo o tempo três categorias também têm dois subcategorias para determinar o timespan que você está procurando: min para pesquisar por minutos e tempo para pesquisar por dias.

O argumento numérico (n) marcadores baseado em vez de pode ser negativo, positivo ou neutro:

  • n procura por um período de tempo que corresponde exatamente ao n.
  • +n procura por períodos mais de n.
  • -n Pesquisar por menos de n períodos.

Por exemplo, usando o -atime sinalizador permite que você pesquisar arquivos com base na hora o arquivo foi lido ou por escrito para última. Para localizar todos os arquivos chamado foo que foram acessados há menos de 1 dia insira:

find / -atime -1 -name foo*
/root/misc/foobar.txt
/root/misc/foobar.sh
/root/misc/foo
/root/misc/foobar

Para encontrar tudo chamado foo arquivos acesso dentro de 45 minutos último uso o -amin em vez disso, sinalize:

find / -amin -45 -name foo*
/root/misc/foo

Você também pode usar o -cmin e -ctime bandeiras da mesma forma para encontrar arquivos com base na última vez que os dados do arquivo inode foi alterados (geralmente quando o arquivo foi movido para um novo local dentro do sistema).

Depois de mover o arquivo foobar.txt agora é entre os resultados da pesquisa para todos os arquivos chamado foo que foram alterados nos last10 minutos:

mv /root/misc/foobar.txt /root/other/foobar.txt
find / -cmin -10 -name foo*
/root/other/foobar.txt

Os sinalizadores tempo final da -mmin e -mtime permitem que você encontre arquivos com base no última vez que o conteúdo do arquivo foi modificado.

Depois de usar o gato > comando para adicionar um novo texto para o arquivo foobar.txt, agora ele é localizado ao procurar arquivos que foram modificados nos últimos 5 minutos:

cat > ~/other/foobar.txt
This is a new line.
ctrl+c
find / -mmin -5 -name foo*
/root/other/foobar.txt

Encontrar ao conteúdo do arquivo

Se você quiser pesquisar arquivos com base no conteúdo de texto real dentro do arquivo, você pode combinar o comando localizar com outros comandos unix usando o -exec sinalizador.

Por exemplo, combinando -exec com muito poderosa ferramenta de GREP, você pode encontrar todos os nomes foo arquivos como antes que também contenham texto específico:

find / -type f -name foo* -exec grep -i "My favorite foods are" /dev/null {} +
/root/misc/foobar.sh:My favorite foods are:
/root/misc/foo:My favorite foods are:
/root/other/foobar.txt:My favorite foods are:

Parece que o comando inteiro muito difícil, mas ele realmente consiste apenas de duas partes básicos:

find / -type f -name foo*

É a funcionalidade básica do comando Localizar coberto tão bem neste que tutorial, então aqui estamos pesquisando de todos os arquivos do typefile com nomes começando com foo.

-exec grep -i "My favorite foods are" /dev/null {} +

A última metade do comando usa o novo -exec sinalizador, seguido pelo comando unix que você deseja executar no thefind resultados. Nesse caso, o componente de chave é:

grep -i "My favorite foods are"

Isso irá procurar o conteúdo de seus arquivos (ignorando caso devido à -i sinalizador) para o texto "Meus pratos favoritos são."

O mesmo comando em andamento, mas em vez disso, procurando "apple" vemos há apenas dois arquivos que tem maçã listado como um dos pratos Favoritos:

find / -type f -name foo* -exec grep -i "apple" /dev/null {} +
/root/misc/foobar.sh:apple
/root/other/foobar.txt:apple

Enquanto isso é apenas uma breve visão geral de usar -exec Sinalizador de GREP dentro de sua localização de pesquisa, ele oferece a você um nível extremamente alto de versatilidade e poder em suas pesquisas.

Agora, vá para trás e encontrar os arquivos!


Este artigo foi útil?
Agradecemos seus comentários. Para falar com um representante do atendimento ao cliente, ligue para o suporte ou utilize a opção de bate-papo acima.
Ficamos felizes em ajudar! Há algo mais que possamos fazer por você?
Mil desculpas. Conte-nos o que estava confuso ou por que a solução não resolveu o seu problema.