Uma maneira (eu suspeito que pode haver uma maneira melhor) é usar o grep para retornar apenas os caminhos que terminam com o nome da sua pasta:
locate foldername | grep /foldername$
Eu uso localizar todo o tempo para encontrar arquivos que eu conheço o nome, localizar é muito rápido e eu amo isso. Para arquivos recentemente criados, o find é ótimo, normalmente com arquivos criados recentemente Eu sei onde basicamente eles foram criados, então eu não tenho que procurar em todo o meu sistema de arquivos.
Quando esqueci a localização de um diretório, nem encontrar nem localizar parece ideal.
O Locate sempre exibe informações demais porque cada arquivo dentro de um diretório também é compatível com o locate. Por exemplo, se eu estivesse procurando um diretório chamado log em algum lugar no meu sistema de arquivos, locate log retornaria toneladas e toneladas de resultados. Se eu fizer a mesma coisa com find, localizar / -name log -type d localizar leva minutos para ser executado e expulsa todos os tipos de erros de permissão sempre que encontrar uma pasta que não possa ler.
Existe uma maneira melhor?
Resposta: Então, eu fico com o grep até encontrar outra coisa:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}$"
else
locate $@ | grep "/${last}$"
fi
}
Uma maneira (eu suspeito que pode haver uma maneira melhor) é usar o grep para retornar apenas os caminhos que terminam com o nome da sua pasta:
locate foldername | grep /foldername$
Você pode usar a opção --regex
( -r
) de locate
:
locate -r '/log$'
Você já tentou:
locate /home/insertusernamehere/*/filename
?
ou
locate file | grep -i '^/home/.*/examplesubdirectory'
?
ou qualquer variação de tal?
Aqui está
locatedir () {
locate "$*" | while read line
do
if [ -d "$line" ] ; then echo $line ; fi
done
}
locatedir $*
Tags find