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 | editar código-fonte]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.
which
[editar | editar código-fonte]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 | editar código-fonte]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.
find
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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.