Dicas Úteis

Pesquisa - no Linux com find

Pin
Send
Share
Send
Send


Como introdução, vamos dar uma descrição de como você pode pesquisar no linux em geral. Existem muitos programas para esses propósitos, mas alguns deles já se tornaram clássicos do Linux. Ressaltamos que neste artigo vamos nos concentrar exclusivamente no linux. Isso significa que mesmo que você encontre utilitários com os mesmos nomes em sistemas operacionais baseados em Solaris ou BSD, essas dicas nem sempre funcionam. Isso também se aplica ao busybox, que implementa apenas uma pequena parte da funcionalidade dos utilitários originais.

Então conheça os heróis da resenha de hoje: localize - fornece uma pesquisa por nome de arquivo em um banco de dados pré-preparado, achar - Funciona em um sistema de arquivos real e oferece oportunidades incríveis para pesquisar arquivos e pastas por vários parâmetros. Nós também vamos falar sobre grep - utilitário para pesquisar texto em arquivos.

Procure um arquivo pelo nome usando o utilitário locate

Para executar uma pesquisa simples de arquivos por nome no Linux, é mais lógico usar o comando locate - devido a um banco de dados preparado anteriormente, ele produzirá rapidamente o resultado desejado:

Se você receber uma mensagem informando que o comando não foi encontrado, talvez seja necessário instalá-lo. Para distribuições baseadas no Debian (Ubuntu, Mint), você pode instalá-lo com o comando:

# apt-get install mlocate

Usuários RedHat, CentOS e Fedora devem completar

# yum instalar mlocate

Após a instalação, você precisa criar / atualizar o banco de dados - um arquivo contendo um “instantâneo” do sistema de arquivos, graças ao qual o locate funciona tão rapidamente:

Ou seja em vez de percorrer todo o sistema de arquivos a cada vez, localize trusts updatedb para criar um arquivo contendo todos os nomes e caminhos do sistema de arquivos e procura nele. É importante manter sua relevância, caso contrário, você pode encontrar acidentalmente arquivos que foram excluídos por um longo tempo ou não encontrar novos. Portanto, updatedb durante a instalação "trava" no CRON e é executado automaticamente - você pode verificar isso observando os arquivos de trabalho CRON.

Pesquisa de Pastas

De fato, procurar uma pasta no linux não é diferente de encontrar um arquivo, já que uma pasta é um arquivo. No entanto, o find nos dá a capacidade de especificar um tipo. Por exemplo, para pesquisar explicitamente apenas pastas cujos nomes contenham a palavra, por exemplo, mysql, execute

# find / -type d -name "* mysql *"

Aqui, a opção "tipo" indica o tipo. Atualmente, o find suporta os seguintes tipos:

  • b - dispositivo de bloco
  • c - dispositivo de caractere
  • d - pasta (diretório)
  • p - pipe nomeado
  • f - arquivo regular
  • l - link simbólico
  • s - soquete
  • D - Porta (apenas Solaris)

Você pode ler mais sobre os vários parâmetros de busca de localização digitando o comando

Pesquisa de texto no Linux com o grep

Sim, o grep é realmente muito bom quando se trata de encontrar texto em arquivos linux por padrão. Vamos fazer uma reserva imediatamente que procuraremos texto em arquivos de texto simples - texto puro, como arquivos de configuração, shell scripts (bash. Python, php.), Etc. É improvável que possamos efetivamente procurar arquivos Word e Excel com uma uva.

Então, para procurar por uma string através de todos os arquivos em um diretório, por exemplo / etc, você deve digitar

# grep -lri root / etc / *

Tal comando exibirá os nomes de todos os arquivos nos quais é possível encontrar as cobiçadas 4 letras "raiz". Aqui, a opção "-l" faz com que o grep produza apenas nomes de arquivos. Ou seja se você quiser ver também aquela linha onde era possível encontrar a palavra solicitada, então "-l" deveria ser omitido. A opção "-r" procura não apenas em / etc, mas em todos os arquivos em todas as subpastas. Finalmente, a opção “-i” diz para não diferenciar maiúsculas de minúsculas, ou seja, grep irá procurar não apenas a palavra “root”, mas também “ROOT” e “rOOt”. Você entendeu

Naturalmente, o suporte a grep suporta expressões regulares. Para executar, por exemplo, uma pesquisa por uma linha que comece claramente com a mesma palavra, digite

# grep -lri ^ root / etc / *

A capa no início da palavra "root" obriga o grep a exibir apenas os arquivos em que a palavra "root" está no início da linha. E há muitos desses truques. Se você não está familiarizado com a regex, então você deve pelo menos começar com a Wikipedia

Sintaxe geral

caminho para o diretório raiz de onde iniciar a pesquisa. Por exemplo, localize / home / user - pesquise no diretório correspondente. Para o diretório atual, você precisa usar o ponto “.”.

um conjunto de regras pelas quais pesquisar.

* Por padrão, a pesquisa é recursiva. Para pesquisar em um diretório específico, você pode usar a opção maxdepth.

Descrição das opções

O tipo de objeto de pesquisa. Opções possíveis:

  • f - file
  • d é um diretório
  • l - link
  • p - pipe
  • s é o soquete.
OpçãoDescrição
nomePesquise por nome.
-inomePesquisa insensível a maiúsculas e minúsculas por nome.
tipo
- tamanhoO tamanho do objeto. É definido em blocos de 512 bytes ou apenas em bytes (com o caractere "c").
-mtimeHora da mudança do arquivo. Está indicado em dias.
-mminAltere o tempo em minutos.
-atimeA hora do último acesso ao objeto em dias.
-aminÚltimo tempo de acesso em minutos.
-ctimeA última alteração na propriedade ou direitos para um objeto em dias.
-cminÚltima mudança de propriedade ou direitos em minutos.
-utilizadorPesquise pelo proprietário.
-grupoPor grupo.
-permCom direitos de acesso específicos.
-depitoA pesquisa deve começar não a partir da raiz, mas do diretório aninhado mais profundo.
-maxdepthProfundidade máxima de pesquisa de diretório. -maxdepth 0 - pesquisa apenas no diretório atual. Por padrão, a pesquisa é recursiva.
-primaExclusão de diretórios listados.
-montagemNão mude para outros sistemas de arquivos.
-regexPor nome com uma expressão regular.
-regextypeTipo de expressão rugular.
-LMostra o conteúdo dos links simbólicos (link simbólico).
-emptyProcure por diretórios vazios.
-deleteExcluir encontrado.
-lsSaída como ls -dgils
-printMostrar encontrado.
-print0O caminho para os objetos encontrados.
-exec <> ,Execute o comando no encontrado.
-okEmita uma solicitação antes de executar -exec.

Um conjunto completo de opções relevantes pode ser obtido pela equipe encontrar homem.

Pesquisa com ação (exec)

Encontre apenas arquivos que começam em sess_ e exclua-os:

encontrar. -name "sess_ *" -type f -print -exec rm <> ,

* -print não é necessário usá-lo, mas mostrará tudo que será apagado, portanto esta opção é conveniente para usar quando o comando é executado manualmente.

Renomear arquivos encontrados:

encontrar. -name "sess_ *" -tipo f -exec mv <> novo_nome ,

encontrar. -name "sess_ *" -tipo f | xargs -I '<>' mv <> novo_nome

Exibir o número de arquivos e pastas encontrados que terminam em .tmp:

encontrar. -name "* .tmp" | wc -l

Limpeza programada

A equipe achar conveniente usar para excluir automaticamente arquivos obsoletos.

Abra o cron job para edição:

0 0 * * * / bin / find / tmp -mtime +14 -exec rm <> ,

* neste exemplo, excluímos todos os arquivos e pastas do diretório / tmp quem é mais velho 14 dias. A tarefa é executada todos os dias em 00:00.
* nós olhamos o caminho completo para o comando executável find que encontrar - em diferentes sistemas UNIX, ele pode estar localizado em locais diferentes.

23) Encontre os arquivos maiores e menores

Para exibir uma lista dos maiores ou menores arquivos, usamos find em conjunto com sort, e se precisarmos exibir 3 "most-most", então usamos head.

Para exibir três arquivos do diretório atual, insira:

Da mesma forma, podemos exibir os arquivos menores no diretório atual:

Assista ao vídeo: Encontrar arquivos no Linux com find (Julho 2020).

Pin
Send
Share
Send
Send