Este tutorial foca em como encontrar arquivos em Linux usando o comando find e locate.
como administrador de sistema, é uma tarefa muito comum procurar um arquivo específico em seu sistema de arquivos.
no entanto, pode ser às vezes difícil encontrar arquivos em um sistema de arquivos Linux, especialmente se você tem dezenas de usuários diferentes.
Existem dois comandos que podem ajudá-lo a atingir o seu objectivo : encontrar e localizar.,
neste tutorial, vamos ver como usar esses comandos de forma eficaz e como eles podem ser sintonizados para alcançar o que estamos procurando.
Índice
Encontre Arquivos usando o comando Find
A primeira maneira de encontrar e localizar arquivos em um host Linux é usar o comando localizar.,
Por padrão, o comando find está disponível em todas as distribuições e tem a seguinte sintaxe
$ find <options> <path> <expression>
dica Rápida : você tem alguma dificuldade para lembrar-se do caminho ou a expressão vem primeiro?
lembre-se que para o grEP é o caminho da expressão, e encontrar é o oposto, por isso a expressão do caminho!
Find é um comando muito poderoso, pois tem muito mais opções do que o comando locate.
Aqui estão todas as possibilidades da função find no Linux.,
Procurar ficheiros com procurar pelo nome de ficheiro
a utilização mais comum da função find é localizar ficheiros dados os seus nomes de ficheiros.
$ find <path> -name <pattern>
a principal diferença entre encontrar e localizar quando se trata de procurar por ficheiros é que o find irá procurar por nomes de ficheiros enquanto o locate irá procurar por caminhos para o ficheiro.
por exemplo, se voltarmos ao exemplo runlevel que usamos Antes, aqui está como procurar por arquivos runlevel usando o comando find.,
$ find / -name runlevel*
o Que é o “2> /dev/null” parte?
redirecionei a saída de erro para /dev/null usando redirecionamento de saída para evitar mensagens de erro na consola.
Localizar arquivos usando encontrar por tipo de ficheiro
Como anteriormente discutido em nosso artigo sobre soft e hard links, ficheiros são atribuídos os tipos de arquivo e é usada como uma forma de diferenciá-los.,
Aqui está uma recapitulação de todos os tipos de arquivos usados no Linux.
- f : um padrão de arquivo
- d : uma pasta ou diretório
- l : um link simbólico ou soft link
- b : dispositivos de bloco (tal como um disco rígido por exemplo)
- c : caractere dispositivos (portas seriais, placas de som)
- p : pipe nomeado
- s : socket
o fato de Saber todos os tipos de arquivo, você agora é capaz de procurar arquivos por tipo de arquivo com o comando localizar.
$ find <path> -type <filetype>
por exemplo, se procurarmos todas as ligações simbólicas na máquina, emitiremos o seguinte comando.,
$ find / -type l
Parameters can be combined, for example if I am looking for all symbolic links whose filenames are ending with “.service “(para isolar todos os serviços do systemd, por exemplo), eu executaria o seguinte comando.
$ find / -type l -name *.service
Localizar ficheiros usando um padrão (por extensões)
da mesma forma para o comando locate, você é capaz de encontrar arquivos no Linux usando um padrão.
Como um lembrete, um padrão é uma cadeia que inclui caracteres globulares (como *, ?,, ou intervalos).
Esta opção é particularmente quando você está tentando encontrar arquivos dados uma extensão, por exemplo arquivos Javascript.
Para encontrar arquivos no Linux usando um padrão, execute o seguinte comando
$ find <path> -name ".<extension>"
$ find / -name "*.js"
Arquivos de arquivos no Linux pelo proprietário
às Vezes, você deseja isolar os arquivos criados por um determinado usuário.
ao apagar um utilizador na sua máquina, poderá querer apagar todos os ficheiros associados a este utilizador, por exemplo.,
por vezes, os utilizadores criam ficheiros a partir da sua pasta pessoal e a remoção de uma pasta pessoal do utilizador não é suficiente por si só.
Como consequência, para encontrar os arquivos criados por um determinado usuário no Linux, execute o seguinte comando
$ find <path> -user <user>
Por exemplo, para localizar todos os arquivos pertencentes ao “joão” no meu host, eu iria executar o seguinte comando.
$ find / -user john
Agora, o que se eu quiser apagar todos os arquivos de propriedade de john com um simples comando?,
pode ser facilmente alcançado usando a bandeira delete.
$ find / -user john -delete
Procurar ficheiros no Linux por permissões
Usando o comando find, Poderá também encontrar e localizar ficheiros que tenham determinadas permissões na sua máquina.
$ find <path> -perm <permissions>
como um lembrete, aqui está como as permissões de arquivos funcionam no Linux.
para encontrar todos os ficheiros que tenham permissões completas (um 777 dado a notação binária), poderá executar o seguinte comando.,
pode ser bastante útil se, por razões de segurança, quiser inspeccionar se não houver ficheiros configurados com permissões completas no seu sistema.
Localizar arquivos com encontrar por tamanho
Outro modo muito útil para encontrar e localizar arquivos no Linux é encontrar o comando find com a opção de tamanho.
a opção Tamanho permite que você procure por arquivos que são exatamente o tamanho que você está especificando, maior que um tamanho específico ou inferior a um tamanho específico.,
Para pesquisar arquivos por tamanho, use o seguinte comando
$ find <path> -size <size>
O tamanho é definido pelos seguintes prefixos :
- c: bytes
- b: blocos de 512 bytes
- k: Kilobytes
- M: Megabytes
- G: Gigabytes
Você pode especificar um “+” se você estiver procurando por arquivos maiores que o tamanho especificado.,
Por exemplo, para localizar ficheiros com mais de 1 GB no seu sistema, execute o seguinte comando
$ find / -size +1G
Para encontrar arquivos inferior a 10 Mb no seu sistema, execute o seguinte comando
$ find / -size -10M
Finalmente, para procurar por arquivos que são exatamente o tamanho especificado na consulta, você não deve acrescentar qualquer um de mais ou de menos prefixos para o comando.
$ find / -size 1024k
o comando definido irá encontrar todos os ficheiros que tenham exactamente 1024 Kbs de tamanho na sua máquina.,
Procurar ficheiros no Linux por data de modificação
Usando o find, Você também é capaz de encontrar ficheiros com uma data de modificação, recente ou não.
Este comando é muito útil e usado muitas vezes pelos administradores de sistema para encontrar arquivos ou diretórios que foram recentemente modificados.
Para pesquisar por arquivos usando encontrar pela data de modificação, execute o seguinte comando
$ find <path> -mtime <time>
, Onde o tempo representa os arquivos modificados 24*<tempo> horas atrás. consequentemente, o tempo é expresso em dias.,
da mesma forma para o tamanho opção, você pode acrescentar um “mais” ou “menos” do operador para o tempo de procurar por arquivos modificados mais de <tempo> dias atrás, ou menor do que <tempo> dias atrás.
Por exemplo, para procurar por arquivos modificados exatamente 3 horas atrás, você executaria o seguinte comando.,
$ find / -mtime 3
Para localizar os arquivos modificados mais de uma semana atrás, você deverá executar o seguinte comando
$ find / -mtime +7
Para localizar os arquivos modificados menos de dois dias atrás, você irá executar o seguinte comando
$ find / -mtime -2
Encontrar arquivos com a dinâmica de profundidade
Como você provavelmente observou, desde o início deste tutorial, estamos dando exemplos de arquivos de pesquisas de partida a partir do diretório raiz.
Como consequência, todas as pastas são navegadas recursivamente.,
no entanto, podemos restringir o número de diretórios viajados recursivamente de um diretório, isto é chamado de profundidade.
para limitar as pesquisas de ficheiros a uma dada profundidade, execute a seguinte pesquisa
$ find <path> -maxdepth <depth>
como exemplo, aqui está a forma como pode restringir as pesquisas de Ficheiros à pasta actual, sem pastas de crianças a ser navegadas.
$ find / -maxdepth 1
você pode obviamente combinar este comando com a bandeira do nome para procurar por ficheiros com um nome na pasta actual.,
$ find . -maxdepth 1 -name *.tar
Encadeamento encontrar com -exec
Em alguns casos, você pode achar útil para a cadeia de comando find com a exec um.
a opção exec pode ser usada para acorrentar vários comandos juntos : tomando o resultado do primeiro como uma entrada do segundo.,
digamos, por exemplo, que você quer encontrar todos os arquivos modificados há menos de um minuto
$ find /home/user -mmin -1./file1
Agora vamos dizer que você quer apagar todos os arquivos que foram modificados há menos de um minuto.
pode encadear o comando find com a opção-exec usando esta sintaxe.
$ find /home/user -mmin -1 -exec echo rm -f '{}' \;
Nós, obviamente, o primeiro “eco” os resultados como nós queremos ter certeza de que estamos excluindo os arquivos corretos.,
Quando estiver pronto para apagar esses ficheiros, basta remover o comando echo.
$ find /home/user -mmin -1 -exec rm -f '{}' \;
Localizar Arquivos no Linux usando o comando Locate
Outra ótima maneira de encontrar e localizar arquivos no Linux é usar o comando locate.
pré-Requisitos
Se o comando locate não está disponível no seu sistema, certifique-se de ler a próxima seção para obter localizar em execução no seu sistema.,
a-Instalando o Locate nas distribuições baseadas no APT e no RPM
para instalar o locate, irá necessitar de privilégios do sudo na sua máquina Linux.
para verificar se o locate está instalado na sua máquina, execute o comando locate na linha de comandos.,
$ locate
Se localize está instalado no seu computador, ele vai esperar uma expressão para fornecida
Se localize não está instalado na sua máquina, uma mensagem de erro será exibida
Para instalar o localize no Ubuntu 18.04 e Debian 10, execute o seguinte comando.,
$ sudo apt-get install mlocate
similarmente, se estiver numa distribuição baseada em CentOS ou Fedora, execute o seguinte comando para instalar o locate.
$ sudo yum install mlocate
b – Updating your MLOCATE database
a função locate funciona com uma base de dados local armazenada no seu sistema de ficheiros que armazena cada nome de ficheiro da sua máquina.
ao executar um comando locate, o locate irá procurar na base de dados preparada por updatedb para o ficheiro que está a procurar.periodicamente, uma tarefa cron actualiza o mlocate.ficheiro db para procurar as entradas mais recentes.,
a base de dados está localizada em/var/lib/mlocate / mlocate.db por padrão e o arquivo de configuração updatedb é armazenado em /etc / updatedb.conf.
Por agora, você pode deixar as opções predefinidas e executar um comando updatedb simples para a sua base de dados actualizar.
$ sudo updatedb
Localizar ficheiros dado um padrão de nome
A forma mais básica para encontrar arquivos no Linux é fornecer um padrão para o comando locate.,
Por omissão, a sintaxe do comando locate é a seguinte
$ locate ... ...
Se estiver à procura de um dado ficheiro de configuração no seu sistema, uma forma fácil de O Encontrar é fornecer o seu nome completo de ficheiro ao comando locate.
$ locate updatedb.conf
Como você pode ver, o comando locate está retornando a completa caminhos para o arquivo que eu estou procurando.,
localiza ficheiros em directórios restritos
por vezes, pode não ter acesso a algumas directorias no seu sistema.
Como consequência, você não será capaz de localizar os arquivos localizados nele.
tomemos o exemplo de uma pasta proibida que contém um ficheiro chamado “restricted-file”.
Para localizar os arquivos localizados em diretórios restritos, você precisa executar o comando locate com sudo privilégios.,
$ sudo locate restricted-file
Localizar ficheiros usando um padrão
Usando o comando locate, você pode fornecer “padrões” na forma de globbing caracteres.
Globbing characters, also called wildcards, are characters used in order to match one or multiple entries with a simplified expression.
O mais popular é o “*” que irá corresponder a qualquer personagem, incluindo nenhum.
Aqui está uma tabela de recapitulação para caracteres globbing e suas funções.,6934f1″>
ab
cab
runlevel
runlevel1, runlevel2, runlevel6
As an example, here’s a way to locate all text files on your system.,
$ locate *.txt
Localizar arquivos usando uma expressão regular
Conforme indicado na página oficial da man para localizar, localizar o comando aceita um padrão como uma entrada.
significa que você é capaz de fornecer uma expressão regular para o comando locate.
para encontrar e localizar os ficheiros que tenham um regex, use a opção –regex para o comando locate.,
$ locate --regex <regex>
por exemplo, para isolar todos os ficheiros a começar pelo runlevel seguido de um número, você executaria o seguinte comando.
$ locate --regex runlevel+
Ao usar regexes, há um ponto importante que você deve estar ciente de localização de arquivos.
o comando locate está à procura de localizações para ficheiros na sua base de dados local.,
Como consequência, ao procurar por ficheiros, deverá estar ciente de que a sua expressão regular tem de corresponder à localização do ficheiro e não apenas ao nome do ficheiro.
Por exemplo, se eu procurar por arquivos começando com “run”, nenhum resultado não será devolvido como o caminho para o arquivo começa com”/usr”.
Localizar arquivos usando maiúsculas e minúsculas opção
Quando a busca por arquivos em seu sistema de arquivos, você pode não ter certeza sobre o modo como um determinado arquivo foi nomeado.,
foi escrito em maiúsculas ou minúsculas? Tem letras maiúsculas?
para encontrar e localizar ficheiros usando uma opção insensível a maiúsculas, adicione a opção-i ao seu comando ‘locate’.,
$ locate -i <file_pattern>
Pesquisa de arquivos por conteúdo usando o grep
Em alguns casos, você pode estar interessado em pesquisar para arquivos que correspondem a uma determinada palavra, da frase que está localizado DENTRO do arquivo.
isto pode acontecer, por exemplo, se estiver a tentar encontrar o ficheiro que contém eventos logísticos específicos.,
a primeira forma de procurar por ficheiros que correspondam a uma palavra específica é usando o comando grep
Nota : Não se esqueça da opção “-r” se estiver a procurar ficheiros através de pastas inteiras.
por exemplo., se você procura todos os arquivos com “erro” em seu conteúdo, localizado em seu diretório home, você deve digitar
$ grep -r error /home/user
Em alguns casos, você pode querer encontrar arquivos dada uma expressão regular.
para encontrar ficheiros usando uma expressão regular, use a opção “- e”.,
$ grep -r -E <expression> <path>
Vamos dizer por exemplo que você deseja localizar o arquivo correspondente a ‘abc’ padrão em um de seus arquivos, você deverá digitar
$ grep -r -E "abc.*" --color /home/user
Nota : a opção de cor é usada para realçar jogos usando o comando grep.,
Encontre arquivos usando o que
Outra boa forma de localizar arquivos no Linux é usar o comando.
o comando que é usado para localizar os ficheiros associados a um comando específico.
isto pode tornar-se muito útil quando não sabe onde guardou os seus binários para um comando ou se precisa de localizar um comando para o Adicionar ao seu caminho.,
$ which <command>
Por exemplo, para procurar por arquivos associados ao comando “ls”, você deve digitar
$ which ls/usr/bin/ls
Como você pode ver, você tem o caminho completo para o arquivo.
localize binários usando WHERIS
similarmente, é completamente possível procurar por arquivos usando o comando Whois.
O “whereis” comando pode ser visto como um conjunto de “que” comando “whereis” fornece informações sobre o nome do comando, o arquivo de localização, bem como a localização das páginas de manual.,
para executar o Wheres, basta escrever “wheis” e adicionar o nome do seu comando.
$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
Pretty handy!
conclusão
no tutorial de hoje, você aprendeu como pode encontrar e localizar ficheiros no Linux usando dois comandos importantes: localizar e encontrar.
mesmo se a opção foi apresentada individualmente, você deve lembrar que eles podem ser combinados, a fim de ser capaz de especificar ainda mais os arquivos que você está procurando.
Como sempre, se você está interessado na administração do sistema Linux, temos uma seção completa dedicada ao Linux em nosso site.,
As always, here is a short video on the subject in case you prefer Youtube videos.