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
editarMuitas 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
editarA 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
editarEssa 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
editarO 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
editarEnquanto 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
editar1. 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.