Linux Essencial/Lição Localizando arquivos

  • Objetivo(s): Fornecer informações sobre como é feita a localização de arquivos por linha de comando.
  • Direitos autorais e licença: Veja notas de direitos autorais e licença no final da lição.

Localização de arquivos

editar

Muitas vezes é importante para o administrador do sistema saber onde se encontram determinados arquivos, principalmente os que influenciam a configuração do sistema. Existem vários meios de se fazer busca, podendo ser através de caminhos de path (atalhos), diretamente no sistema ou em um banco de dados.

A ferramenta which é utilizada na busca de comandos presentes no path do sistema quanto ou do usuário corrente. Como a busca é feita dentro do path ele mostrará os arquivos executáveis.

Sintaxe:

which comando

whereis

editar

Essa ferramenta faz busca por arquivos executáveis, por manuais, arquivos fontes e de configuração (ver sobre manuais no capítulo sobre Documentação).

Sintaxe:

whereis comando

NOTA: o whereis pode trazer alguns comandos que o which não retorna, sendo aconselhável o uso deste comando.

O comando find faz a busca por arquivo ou diretório no sistema, bastando passar o ponto inicial de busca e uma expressão que define os arquivos a serem encontrados. Essas expressões incluem várias características dos arquivos, incluindo seu tamanho, data de criação ou modificação, etc. Outras opções incluem, por exemplo, a quantidade de níveis em que a busca deve ser feita.

Sintaxe:

find diretório_busca [opções][arquivo/diretório]

diretório_busca é o ponto inicial de busca, percorrendo também os sub-diretórios presentes dentro do mesmo.

opções:

-name (expressão) - faz a busca pela expressão indicada (arquivo/diretório)

-size (tamanho) - faz a busca pelo tamanho indicado. Caso seja preciso fazer busca de até determinado tamanho ou maiores, pode-se passar “+” ou “-” antes de (tamanho);

-type (tipo) - faz a busca pelo tipo de arquivo.

Tipos:

b - bloco

c - caractere

d - diretório

p - pipe

l - link simbólico

s - socket

-mindepth (num) - não faz a busca abaixo de subdiretórios com num níveis;

-maxdepth (num) - faz a busca até num subdiretórios do diretório de busca.

Exemplo:

$ find /tmp -name pasta1

$ find /tmp -size +500K

Em ambos os exemplos a busca será feita dentro do diretório /tmp. No primeiro exemplo será pesquisado o nome pasta1 (nesse caso o nome tem que ser igual ao que está sendo procurado), e no segundo exemplo serão pesquisados arquivos maiores que 500K.

Locate/updatedb

editar

Enquanto o comando find faz a busca no momento de solicitação, o comando locate faz a busca dentro de um banco de dados já construído. A procura dentro de um banco de dados pronto é muito mais rápida.

Sintaxe:

locate [expressão]

Expressão é a palavra a ser pesquisada dentro do banco de dados.

A construção do banco de dados é feita com a ferramenta updatedb.

Sintaxe:

updatedb

Veja um exemplo, supondo que o banco de dados já está construído:

$ locate ls

Com o comando acima é possível pesquisar, dentro do banco de dados, todas as entradas que contenham a expressão ls.

NOTA: O find é mais lento, mas não ocupa espaço em disco.

Exercícios de Revisão

editar

1. Crie um arquivo chamado "achei" dentro de /tmp. Depois vá para o "/" usando caminho relativo. Utilize o localizador find para encontrar o arquivo "achei" a partir do "/".

2. Atualize o banco de dados para o locate. Faça a mesma busca com o locate. Qual demorou mais, o locate (some ao locate o tempo de criação do banco de dados) ou o find?

3. Localize o comando halt e seu arquivo de configuração.