locate
não é confiável para informações atuais e atuais sobre quais arquivos estão presentes em seu sistema. A informação é armazenada em cache em um banco de dados.
Considere também a famosa linha, com link:
It's not working! Should I blame caching?
Para informações atuais reais sobre quais arquivos / diretórios existem na sua caixa agora , use ls
ou find
ou stat
ou test -e filename && echo it is there
ou mesmo printf %s\n *
. Muito qualquer coisa , exceto locate
, lhe dará informações atualizadas sobre seu sistema de arquivos.
Veja também LESS=+/BUGS man locate
, que (no meu sistema) lê em parte:
BUGS The locate program may fail to list some files that are present, or may list files that have been removed from the system. This is because locate only reports files that are present in the database...
Você pode executar updatedb
, mas honestamente, se você sabe exatamente onde estão os arquivos e está usando locate
para encontrá-los ... você está simplesmente fazendo errado. locate
informa um caminho. Não informa nada sobre a existência ou inexistência de arquivos nesse caminho. Se você já conhece o caminho para o arquivo, você não precisa de locate
, não é?
O propósito de locate é "encontrar nomes de arquivos rapidamente", não necessariamente com precisão ou confiabilidade.
Observação: não estou dizendo "não use locate
". Ele tem um propósito, quando você não tem idéia de onde no seu sistema um determinado arquivo pode estar. Mas uma vez que você tenha o nome de caminho de locate
, ele cumpriu seu propósito e agora você precisa usar outras ferramentas para examinar / verify / etc. o arquivo que você encontrou.