outros sinalizadores 'find' que podem ser apropriados, dependendo da necessidade: -type f (não se incomoda com diretórios ou links simbólicos com o mesmo nome) -ls (para mostrar detalhes como o tamanho do arquivo, por exemplo, se os arquivos tiverem o mesmo nome, mas diferentes conteúdos)
Zac Thompson
19
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 updatedbmanualmente, mas isso é ainda mais lento do que o findcletus sugere e requer raiz. Às vezes, atualizo o banco de dados manualmente depois de instalar um monte de coisas novas.
Localizar só funciona se você tiver o serviço em execução para criar o banco de dados de localização (esqueça como é chamado). Também pode sofrer atrasos (já que o arquivo que você está procurando pode ter sido adicionado desde a última compilação).
Cletus
Edições e comentários cruzados no fio. Legal. Você está, é claro, certo em ambos os aspectos.
dmckee --- ex-moderador gatinho
4
Se você se encontra fazendo find /ou em qualquer árvore grande mais de uma vez por semana, a execução do locateserviço provavelmente vale a pena, porque locate(1)é muito mais rápida.
Drew Stephens
@cletus Running sudo periodic weeklyatualiza o locatebanco de dados. Execute isso após qualquer instalação ou download que possa conter os arquivos que você deseja.
Basil Bourque
2
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.
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
Atualizar locatebanco de dados
O banco de dados usado por locatedeve estar atualizado. Após fazer uma instalação ou download que possa conter o arquivo desejado, você deve atualizar o locatebanco de dados.
O locatebanco 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.locatescript.
A maneira mais fácil e segura de forçar a atualização antecipada do locatebanco 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 locatebanco 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 periodicrota evita esse problema.
Sim, isso corresponde a tudo e depois joga tudo fora, exceto o nome que você estava procurando. Em vez disso, você pode simplesmente fazer 'find -name "example.filename"', que faz exatamente o mesmo material sem primeiro imprimir tudo e sem executar um processo adicional de grep.
Respostas:
fonte
Muito mais rápido que
find
, se você estiver executando o serviço de localização, e ele encontrar apenas os arquivos que existiam naupdatedb
ú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 ofind
cletus sugere e requer raiz. Às vezes, atualizo o banco de dados manualmente depois de instalar um monte de coisas novas.fonte
find /
ou em qualquer árvore grande mais de uma vez por semana, a execução dolocate
serviço provavelmente vale a pena, porquelocate(1)
é muito mais rápida.sudo periodic weekly
atualiza olocate
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,
o local executa um trabalho cron todas as noites que reindexa todos os arquivos em sua máquina. Nem sempre é atualizado por esse motivo.
fonte
À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:
Obviamente, isso só funciona se você tiver uma estrutura de diretórios rígida.
fonte
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.Para não diferenciar maiúsculas de minúsculas, adicione
-i
.Atualizar
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 olocate
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.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.
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 daperiodic
rota evita esse problema.fonte
Se você possui o banco de dados de localização atualizado, basta:
fonte
Eu faço às vezes
provavelmente extremamente ineficiente no entanto.
fonte