Eu uso localizar o tempo todo para encontrar arquivos que eu sei o nome de, localizar é muito rápido e eu amo isso. Para arquivos criados recentemente, a localização é ótima, normalmente com arquivos criados recentemente, eu sei onde eles foram criados, basicamente, para que eu não precise pesquisar todo o meu sistema de arquivos.
Quando eu esqueci a localização de um diretório, no entanto, nem encontrar nem localizar parecem ideais.
A localização sempre gera informações demais, pois todos os arquivos em um diretório também correspondem à localização. Por exemplo, se eu estivesse procurando um diretório chamado log em algum lugar do meu sistema de arquivos, o registro de localização retornaria muitos e muitos resultados. Se eu fizer o mesmo com o find, find / -name log -type d find leva alguns minutos para executar e cospe todos os tipos de erros de permissão toda vez que encontra uma pasta que não consegue ler.
Existe uma maneira melhor?
Resposta: Então, continuarei com o grep até encontrar outra coisa:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
tem a sua própria base de capablility regex:-r
ou--regex
... para a gama completa de opções, consulte: Informações localizar'
neste caso:locate -r /log$
é suficiente.Você tentou:
locate /home/insertusernamehere/*/filename
?ou
locate file | grep -i '^/home/.*/examplesubdirectory'
?ou alguma variação de tal?
fonte
grep
não é necessário e, como visto na primeira opção sugerida, também não são regexps.Aqui está
fonte