Estou tentando localizar todas as cópias example.filename
no meu servidor FreeBSD. Qual é a melhor / mais fácil / mais eficiente maneira de fazer isso?
Estou tentando localizar todas as cópias example.filename
no meu servidor FreeBSD. Qual é a melhor / mais fácil / mais eficiente maneira de fazer isso?
Respostas:
find / -name example.filename
locate filename
Muito mais rápido que find
, se você estiver executando o serviço de localização, e ele encontrar apenas os arquivos que existiam na updatedb
última vez em que foram executados (geralmente a noite antes, sob o controle de um trabalho cron).
Você pode correr updatedb
manualmente, mas isso é ainda mais lento do que o find
cletus sugere e requer raiz. Às vezes, atualizo o banco de dados manualmente depois de instalar um monte de coisas novas.
find /
ou em qualquer árvore grande mais de uma vez por semana, a execução do locate
serviço provavelmente vale a pena, porque locate(1)
é muito mais rápida.
sudo periodic weekly
atualiza o locate
banco de dados. Execute isso após qualquer instalação ou download que possa conter os arquivos que você deseja.
Se você tiver o localizador (aka slocate) instalado,
locate example.filename
o local executa um trabalho cron todas as noites que reindexa todos os arquivos em sua máquina. Nem sempre é atualizado por esse motivo.
Às vezes, você deseja encontrar arquivos em um nível de diretório específico. Nesse caso, pode ser conveniente usar caracteres curinga do shell:
ls /data/*/example.filename
Obviamente, isso só funciona se você tiver uma estrutura de diretórios rígida.
locate
Como outros mencionaram, locate
é a maneira mais rápida de encontrar um arquivo. Este comando usa um índice pré-compilado dos nomes de arquivos e pastas. Esse banco de dados de nomes é pesquisado, em vez de rastrear seu sistema de arquivos.
locate example.filename
Para não diferenciar maiúsculas de minúsculas, adicione -i
.
locate -i eXAmPle.FileName
locate
banco de dadosO banco de dados usado por locate
deve estar atualizado. Após fazer uma instalação ou download que possa conter o arquivo desejado, você deve atualizar o locate
banco de dados.
O locate
banco de dados será atualizado automaticamente pelo seu sistema FreeBSD. Há um conjunto semanal de tarefas que inclui essa tarefa. Essas tarefas estão listadas no /etc/periodic/weekly/310.locate
script.
A maneira mais fácil e segura de forçar a atualização antecipada do locate
banco de dados é forçar o conjunto semanal de tarefas a serem executadas agora.
sudo periodic weekly
Ou você pode até forçar todas as tarefas regulares a serem feitas. Você pode fazer isso imediatamente após configurar um novo sistema FreeBSD.
sudo periodic daily weekly monthly
Se você estiver usando outros meios para atualizar o locate
banco de dados, poderá receber uma mensagem sobre a segurança, revelando os nomes de todos os arquivos do seu sistema para qualquer usuário no sistema FreeBSD. O uso da periodic
rota evita esse problema.
Se você possui o banco de dados de localização atualizado, basta:
locate example.filename
Eu faço às vezes
find . | grep example.filename
provavelmente extremamente ineficiente no entanto.