O Linux oferece seis maneiras diferentes de pesquisar, e cada uma tem seus méritos. Vamos demonstrar como usar find
, locate
, which
, whereis
, whatis
, e apropos
. Cada um se destaca em tarefas diferentes; veja como escolher a ferramenta certa para o trabalho.
Você não tem mais escolha quando se trata de comandos para pesquisar e encontrar no Linux. Por que tantos? Bem, cada um deles tem suas especialidades e tem um desempenho melhor do que os outros em certas circunstâncias. Você pode pensar neles como uma espécie de canivete suíço para pesquisa. Vamos examinar cada lâmina por vez e descobrir seus pontos fortes específicos.
Índice
O comando find
O comportamento do find
comando é difícil de determinar por tentativa e erro. Depois de entender a sintaxe , você começa a apreciar sua flexibilidade e poder.
A maneira mais simples de usar find
é apenas digitar find
e pressionar Enter.
encontrar
Usado desta forma find
se comporta como ls
, mas lista todos os arquivos no diretório atual e aqueles em subdiretórios.
Algumas implementações de find
requerem que você coloque o .
para o diretório atual. Se for esse o caso com sua versão do Linux, use o seguinte comando:
encontrar .
Para fazer a find
pesquisa na pasta raiz, você usaria este comando:
encontrar /
Para iniciar a pesquisa em sua pasta pessoal, use este comando:
encontrar ~
Usando encontrar com padrões de arquivo
Para find
ser algo mais do que uma versão autorrecorrente de ls
, devemos fornecer a ele algo para pesquisar. Podemos fornecer nomes de arquivo ou padrões de arquivo. Os padrões usam curingas, onde *
significa qualquer sequência de caracteres e ?
significa qualquer caractere único.
Os padrões devem ser citados para funcionar corretamente. É fácil esquecer de fazer isso, mas se você não citar o padrão curinga find
, não será capaz de executar corretamente o comando que você deu.
Com este comando, vamos pesquisar na pasta atual por arquivos que correspondam ao padrão “*. * S”. Isso significa qualquer nome de arquivo que tenha uma extensão de arquivo que termina em “s”. Usamos a -name
opção para informar find
que estamos passando um nome de arquivo ou um padrão de nome de arquivo.
encontrar . -name "*. * s"
find
retorna esses arquivos correspondentes.
Observe que duas das extensões de arquivo têm dois caracteres e uma tem três caracteres. Isso ocorre porque usamos o padrão “*. * S”. Se quiséssemos apenas as extensões de arquivo de dois caracteres, teríamos usado “*.? S”.
Se soubéssemos com antecedência que estávamos procurando arquivos JavaScript “.js”, poderíamos ter sido mais específicos em nosso padrão de arquivo. Além disso, observe que você pode usar aspas simples para envolver o padrão, se preferir.
encontrar . -name '* .js'
Desta vez, find
apenas relata os arquivos JavaScript.
Ignorando maiúsculas e minúsculas com encontrar
Se você souber o nome do arquivo que deseja find
localizar, pode transmiti-lo ao find
invés de um padrão. Você não precisa envolver o nome do arquivo entre aspas se não houver curingas nele, mas é uma boa prática fazer isso o tempo todo. Isso significa que você não se esquecerá de usá-los quando precisar deles.
encontrar . -name 'Yelp.js'
Isso não retornou nada. Mas é estranho, sabemos que esse arquivo deve estar lá. Vamos tentar novamente e dizer find
para ignorar o caso. Fazemos isso usando a -iname
opção (ignorar o nome do caso)
encontrar. -iname 'Yelp.js'
Esse era o problema, o nome do arquivo começa com um “y” minúsculo, e estávamos pesquisando com um “Y” maiúsculo.
Subdiretórios recorrentes com find
Uma coisa excelente find
é a maneira como ele pesquisa recursivamente nos subdiretórios. Vamos pesquisar qualquer arquivo que comece com “map”.
encontrar . -name "mapa *. *"
Os arquivos correspondentes são listados. Observe que eles estão todos em um subdiretório.
Procurando por diretórios com encontrar
A -path
opção faz com que find
procure diretórios. Vamos procurar um diretório cujo nome não conseguimos lembrar, mas sabemos que termina com as letras “sobre”.
encontrar . -caminho '* sobre'
O diretório é encontrado, é apenas denominado “about” e está aninhado dentro de outro diretório dentro do diretório atual.
Existe uma opção -ipath
(ignorar o caminho do caso) que permite a você pesquisar caminhos e ignorar o caso, semelhante à iname
opção – discutida acima.
Usando atributos de arquivo com find
find
pode procurar arquivos que tenham atributos que correspondam à pista de pesquisa. Por exemplo, você pode procurar arquivos que estão vazios usando a -empty
opção, independentemente de como sejam chamados.
encontrar . -vazio
Todos os arquivos de comprimento zero byte serão listados nos resultados da pesquisa.
A -executable
opção encontrará qualquer arquivo que possa ser executado, como um programa ou um script.
encontrar . -executável
Os resultados listam um arquivo chamado “fix_aptget.sh”.
Eles também contêm três diretórios, incluindo ‘.’, O diretório atual. Os diretórios são incluídos nos resultados porque o bit de execução é definido em suas permissões de arquivo. Sem isso, você não seria capaz de entrar (“executar”) esses diretórios.
A opção -type
A -type
opção permite que você pesquise o tipo de objeto que está procurando. Forneceremos o indicador de tipo “f” como parâmetro para a -type
opção porque queremos find
pesquisar apenas arquivos.
encontrar . executável -tipo f
Desta vez, os subdiretórios não são listados. O arquivo de script executável é o único item nos resultados.
Também podemos pedir find
para incluir apenas diretórios nos resultados. Para listar todos os diretórios, podemos usar a -type
opção com o indicador de tipo “d”.
encontrar . digite -d
Apenas diretórios e subdiretórios são listados nos resultados.
Usando outros comandos com find
Você pode executar alguma ação adicional nos arquivos encontrados. Você pode ter os arquivos passados, por sua vez, para algum outro comando.
Se precisarmos ter certeza de que não há arquivos executáveis no diretório e subdiretórios atuais, poderíamos usar o seguinte comando:
encontrar . -name "fix_aptget.sh" -exec chmod -x '{}' \;
O comando significa:
- Procure no diretório atual por um objeto nomeado chamado “fix_aptget.sh”.
- Se for encontrado, execute o
chmod
comando. - Os parâmetros que são passados
chmod
são-x
para remover as permissões executáveis e'{}'
que representam o nome do arquivo encontrado. - O ponto e vírgula final marca o fim dos parâmetros que serão transmitidos
chmod
. Isso deve ser ‘escapado’ precedendo-o com uma barra invertida ‘\’.
Uma vez que este comando foi executado, podemos pesquisar por arquivos executáveis como antes, e desta vez não haverá nenhum arquivo listado.
Para ampliar nossa rede, poderíamos usar um padrão de arquivo em vez do nome de arquivo que usamos em nosso exemplo.
Essa flexibilidade permite que você pesquise os tipos de arquivo especificados, ou com padrões de nome de arquivo, e execute alguma ação nos arquivos correspondentes.
Localizar tem muitas outras opções , incluindo pesquisar arquivos por data de modificação, arquivos pertencentes a um usuário ou grupo, arquivos que são legíveis ou arquivos que têm um conjunto específico de permissões de arquivo.
Os comandos localizar e mlocate
Muitas distribuições de Linux costumavam ter uma cópia do locate
incluído com eles. Isso foi substituído pelo mlocate
comando, que era uma versão aprimorada e atualizada do locate
.
Quando mlocate
é instalado em um sistema, ele modifica o locate
comando para que você realmente use, mlocate
mesmo se digitar locate
.
As versões atuais do Ubuntu, Fedora e Manjaro foram verificadas para ver se elas tinham versões desses comandos pré-instaladas. Ubuntu e Fedora incluídos. mlocate.
Ele precisava ser instalado no Manjaro, com este comando:
sudo pacman -Syu mlocate
No Ubuntu, você pode usar localizar e de forma mlocate
intercambiável. No Fedora e no Manjaro você deve digitar locate
, mas o comando é executado para você por mlocate
.
Se você usar a --version
opção com, locate
verá que o comando que responde é realmente mlocate
.
localizar --version
Como locate
funciona em todas as distribuições Linux que foram testadas, usaremos locate
em nossas explicações abaixo. E é uma letra a menos para digitar.
O banco de dados de localização
A maior vantagem disso locate
é a velocidade.
Quando você usa o find
comando, ele sai correndo e realiza uma pesquisa em seu sistema de arquivos. O locate
comando funciona de maneira muito diferente. Ele faz uma pesquisa no banco de dados para determinar se o que você está procurando está no seu computador. Isso torna a pesquisa muito mais rápida.
Claro, isso levanta uma questão óbvia sobre o banco de dados. O que garante que o banco de dados esteja atualizado? Quando mlocate
é instalado, ele (geralmente) coloca uma entrada em cron.daily
. Isso é executado todos os dias (muito cedo pela manhã) e atualiza o banco de dados.
Para verificar se esta entrada existe, use este comando:
ls /etc/cron.daily/*loc*
Se você não encontrar uma entrada lá, pode configurar uma tarefa automatizada para fazer isso no momento que você escolher.
E se o seu computador não estiver ligado no momento em que o banco de dados deve ser atualizado? Você pode executar manualmente o processo de atualização do banco de dados com o seguinte comando:
sudo atualizadob
Usando localizar
Vamos procurar por arquivos que contêm a string “getlatlong”. Com a localização, a pesquisa procura automaticamente por quaisquer correspondências que contenham o termo de pesquisa em qualquer lugar do nome do arquivo, portanto, não há necessidade de usar curingas.
localizar getlatlong
É difícil transmitir velocidade em uma captura de tela, mas quase imediatamente os arquivos correspondentes são listados para nós.
Dizendo localize quantos resultados você deseja
Às vezes, você pode saber que há muitos arquivos do tipo que está procurando. Você só precisa ver alguns deles. Talvez você apenas queira ser lembrado em qual diretório eles estão e não precisa ver todos os nomes de arquivos.
Usando a -n
opção (número), você pode limitar o número de resultados que locate
retornarão para você. Neste comando, definimos um limite de 10 resultados.
localizar .html -n 10
locate
responde listando os primeiros 10 nomes de arquivo correspondentes que ele recupera do banco de dados.
Contando Arquivos Correspondentes
Se você deseja apenas saber o número de arquivos correspondentes e não precisa saber como eles são chamados ou onde estão em seu disco rígido, use a opção -c (contagem).
localizar -c .html
Portanto, agora sabemos que existem 431 arquivos com a extensão “.html” neste computador. Talvez queiramos dar uma olhada neles, mas pensamos em dar uma olhada e ver quantos havia primeiro. Armados com esse conhecimento, sabemos que precisaremos canalizar a saída less
.
localizar .html | Menos
E aqui estão todos eles, ou pelo menos, aqui está o topo da longa lista deles.
Ignorando o caso com localizar
O -i
(ignorar locate
maiúsculas e minúsculas ) faz exatamente isso, ele ignora diferenças em maiúsculas e minúsculas entre o termo de pesquisa e os nomes de arquivo no banco de dados. Se tentarmos contar os arquivos HTML novamente, mas fornecermos por engano o termo de pesquisa em maiúsculas, não obteremos resultados.
localizar -c .HTML
Ao incluir a -i
opção, podemos locate
ignorar a diferença no caso e retornar nossa resposta esperada para esta máquina, que é 431.
localizar -c -i .HTML
A localização do status do banco de dados
Para ver o status do banco de dados, use a -s
opção (status). Isso faz locate
com que sejam retornadas algumas estatísticas sobre o tamanho e o conteúdo do banco de dados.
localizar -s
O qual comando
O which
comando pesquisa os diretórios em seu caminho e tenta localizar o comando que você está procurando. Ele permite que você determine qual versão de um programa ou comando será executada quando você digitar seu nome na linha de comando.
Imagine que temos um programa chamado geoloc
. Sabemos que está instalado no computador, mas não sabemos onde está localizado. Deve estar em algum lugar do caminho porque quando digitamos seu nome, ele é executado. Podemos usar which
para localizá-lo com este comando:
qual geolocalização
which
relatórios em que o programa está localizado /usr/local/bin
.
Podemos verificar se existem outras cópias do programa em outros locais dentro do caminho usando a -a
opção (todos).
qual -a geolocalização
Isso nos mostra que temos o geoloc
programa em dois lugares.
Obviamente, a cópia /usr/local/bin
será encontrada primeiro pelo shell Bash todas as vezes, portanto, ter o programa em dois lugares não faz sentido.
Remover a versão /usr/bin/geoloc
irá economizar um pouco da capacidade do disco rígido. Mais importante, também evitará problemas criados por alguém atualizando manualmente o programa e fazendo isso no lugar errado. Então se perguntando por que eles não veem as novas atualizações quando executam o programa.
O comando whereis
O whereis
comando é semelhante ao which
comando, mas é mais informativo.
Além da localização do comando ou arquivo de programa, whereis
também relata onde as páginas man (manuais) e os arquivos de código-fonte estão localizados. Na maioria dos casos, os arquivos de código-fonte não estarão em seu computador, mas se estiverem, whereis
farão um relatório sobre eles.
O executável binário, as páginas do manual e o código-fonte são freqüentemente chamados de “pacote” para esse comando. Se você quiser saber onde os vários componentes do pacote para o diff
comando estão localizados, use o seguinte comando:
onde está diff
whereis
responde listando a localização das diff
páginas do manual e do diff
arquivo binário.
Para restringir os resultados para mostrar apenas a localização do binário (na verdade, faça whereis
funcionar como which
) use a -b
opção (binário).
whereis -b diff
whereis
apenas relata a localização do arquivo executável.
Para restringir a pesquisa ao relatório apenas nas páginas de -m
manual, use a opção (manual). Para restringir a pesquisa para relatar apenas os arquivos de código-fonte, use a -s
opção (fonte).
Para ver os locais que whereis
pesquisam, use a -l
opção (locais).
whereis -l
Os locais são listados para você.
Agora que sabemos os locais whereis
a serem pesquisados, podemos, se escolhermos, restringir a pesquisa a um determinado local ou grupo de locais.
A opção -B
(lista binária) restringe a pesquisa de arquivos executáveis à lista de caminhos fornecida na linha de comando. Você deve fornecer pelo menos um local para whereis
pesquisar. A -f
opção (arquivo) é usada para sinalizar o fim do local, por último o início do nome do arquivo.
whereis -B / bin / -f chmod
whereis
olha no único lugar que pedimos para pesquisar. É onde o arquivo está localizado.
Você também pode usar a opção -M
(lista manual) para restringir pesquisas por páginas de manual aos caminhos fornecidos na linha de comando. A opção -S
(lista de fontes) permite restringir a pesquisa de arquivos de código-fonte da mesma maneira.
O comando whatis
O whatis
comando é usado para pesquisar rapidamente nas páginas man (manuais). Ele fornece descrições resumidas de uma linha do termo que você pediu para pesquisar.
Vamos começar com um exemplo simples. Embora pareça o ponto de partida de um profundo debate filosófico, estamos apenas pedindo whatis
para nos dizer o que o termo “homem” significa.
o que é homem
whatis
encontra duas descrições correspondentes. Ele imprime uma breve descrição para cada partida. Também lista a seção numerada do manual que contém cada descrição completa.
Para abrir o manual na seção que descreve o man
comando, use o seguinte comando:
homem 1 homem
O manual abre na seção man (1), na página para man
.
Para abrir o manual na seção 7, na página que discute as macros que você pode usar para gerar páginas de manual, use este comando:
homem 7 homem
A página do manual para as macros do manual é exibida para você.
Pesquisando Em Seções Específicas do Manual
A -s
opção (seção) é usada para limitar a pesquisa às seções do manual de seu interesse. Para whatis
restringir a pesquisa à seção 7 do manual, use o seguinte comando. Observe as aspas em torno do número da seção:
o que é - homem "7"
Os resultados referem-se apenas à seção 7 do manual.
Usando whatis com curingas
Você pode usar curingas com whatis
. Você deve usar a -w
opção (curinga) para fazer isso.
whatis -w char *
Os resultados correspondentes são listados na janela do terminal.
O Comando apropriado
O apropos
comando é semelhante a whatis
, mas tem mais alguns sinos e assobios . Ele pesquisa os títulos das páginas do manual e as descrições de uma linha à procura do termo de pesquisa. Ele lista as descrições da página do manual correspondentes na janela do terminal.
A palavra apropos significa “relacionado a” ou “concernente”, e o comando apropos
tirou seu nome disso. Para pesquisar qualquer coisa relacionada ao groups
comando, podemos usar este comando:
grupos apropriados
apropos
lista os resultados na janela do terminal.
Usando mais de um termo de pesquisa
Você pode usar mais de um termo de pesquisa na linha de comando. apropos
irá pesquisar por páginas de manual que contenham qualquer um dos termos de pesquisa.
apropos chown chmod
Os resultados são listados como antes. Nesse caso, há uma única entrada para cada um dos termos de pesquisa.
Usando correspondências exatas
apropos
retornará as páginas do manual que contêm o termo de pesquisa, mesmo se o termo estiver no meio de outra palavra. Para fazer apropos
retornar apenas correspondências exatas para o termo de pesquisa, use a -e
opção (exata).
Para ilustrar isso, usaremos apropos
com grep
como termo de pesquisa.
apropos grep
Há muitos resultados retornados para isso, incluindo muitos onde grep
está incorporado em outra palavra, como bzfgrep
.
Vamos tentar novamente e usar a -e
opção (exata).
apropos -e grep
Desta vez, temos um único resultado, para o que estávamos realmente procurando.
Combinando todos os termos de pesquisa
Como vimos anteriormente, se você fornecer mais de um termo de apropos
pesquisa, pesquisará páginas de manual que contenham qualquer um dos termos de pesquisa. Podemos mudar esse comportamento usando a -a
opção (e). Isso faz com que apropos
apenas as correspondências selecionadas tenham todos os tempos de pesquisa nelas.
Vamos tentar o comando sem a -a
opção para que possamos ver o que resulta apropos
.
apropos crontab cron
Os resultados incluem páginas de manual que correspondem a um ou outro dos termos de pesquisa.
Agora vamos usar a -a
opção.
apropos -a cron crontab
Desta vez, os resultados são limitados àqueles que contêm os dois termos de pesquisa.
Ainda mais opções
Todos esses comandos têm mais opções – alguns deles muitas mais opções – e você é incentivado a ler as páginas de manual dos comandos que discutimos neste artigo.
Aqui está um rápido resumo de cada comando:
- find : fornece um recurso de pesquisa granular e rico em recursos para procurar arquivos e diretórios.
- Localizar : Fornece uma pesquisa rápida baseada em banco de dados para programas e comandos.
- que : Pesquisa o $ PATH procurando por arquivos executáveis
- whereis : Pesquisa o $ PATH procurando por arquivos executáveis, páginas de manual e arquivos de código-fonte.
- whatis : Pesquisa as descrições de uma linha do homem em busca de correspondências com o termo de pesquisa.
- apropos : Pesquisa a página de manual com mais fidelidade do que whatis, por correspondências com o termo ou termos de pesquisa.
Procurando mais informações sobre o terminal Linux? Aqui estão 37 comandos que você deve saber .