16.04 Localize não encontrando arquivos em /mnt

16.04 Localize não encontrando arquivos em /mnt

Eu tenho uma instalação 16.04 configurada com minha pasta Downloads apontando para um disco rígido secundário (mostra Downloads -> /mnt/data/Downloads). Quando corro locatepara procurar arquivos, ele não mostra nenhum arquivo nesta unidade. Eu executei um sudo updatedbe verifico meu updatedb.conf(nada que vejo excluiu o /mntdiretório ou os arquivos que estou procurando)

O interessante para mim é quando eu cd /mnt/data/DownloadscorrolocalizarPosso ver tudo neste diretório, mas não na minha unidade principal. É quase como se o Ubuntu tivesse dois bancos de dados de localização diferentes, dependendo da unidade em que estou.

Como posso remediar esta situação?

Adicional: Aqui está o meuupdatedb.conf

PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"

Tentei correr sudo locatee isso não alterou os resultados. Tentei correr mlocatee sudo mlocateisso também não alterou os resultados.

Também tentei encontrar outro updatedb.confarquivo e não encontrei nada.

Atualização 1:O sistema de arquivos na unidade secundária é ext4.

Atualização 2:Nada está criptografado também. Estive pesquisando no Google e percebi que isso tem sido um problema para alguns usuários.

Atualização 3:Estou mais confuso agora. Estou tentando encontrar todos os arquivos .iso na minha máquina, abaixo estão os resultados:

@:~$ localizar FreeNAS

/mnt/data/Downloads/FreeNAS-9.3-RELEASE.iso

@:~$ localizar *.iso

/home/hudsona/ubuntu-16.04.1-server-amd64.iso

@:~$ localizar iso

/home//ubuntu-16.04.1-server-amd64.iso

/mnt/data/Downloads/FreeNAS-9.3-RELEASE.iso

(e vários outros resultados)

@:~$ encontrar. -type f -name "*.iso"

./ubuntu-16.04.1-server-amd64.iso

Atualização 4:Mais resultados:sudo localizar / -type f -name "*.iso"me dá os resultados que desejo, mas leva muito tempo para voltar com esses resultados.

Eu queria me aprofundar e ver se realmente tinha dois bancos de dados diferentes, já que obtenho resultados de localização diferentes com base na unidade em que estou. Depois de verificar a página MAN, procurei por um arquivo mlocate.db em meu sistema, aqui estão meus resultados :

  • /usr/share/man/man5/mlocate.db.5.gz
  • /var/lib/mlocate/mlocate.db
  • /var/lib/mlocate/mlocate.db.VEzhqO

Eu estava pensando que o arquivo .VEzhqO poderia ser um banco de dados secundário, então tentei especificar isso com o sinalizador -d para o comando de localização. Isso me deu o erro "não é possível definir estatísticas". O mistério continua.

Atualização 5:Eu reproduzi isso em outra máquina Ubuntu, edição de servidor 16.04.

Atualização 6:Então eu tenho uma solução, localize "*.iso", mas agora estou curioso para saber "por que" isso funciona. Olhei a página da MAN e estes dois links:http://www.linfo.org/locate.htmlehttp://www.howtogeek.com/112674/how-to-find-files-and-folders-in-linux-using-the-command-line/. Nada disso esclarece por que isso funciona.

Responder1

Em todos os shells, o uso *.isoexpande para uma lista de arquivos antes de chamar o comando, portanto, em

locate *.iso

o shell expande automaticamente a expressão criando uma lista de nomes de arquivos a partir dos arquivos no diretório atual. Suponha que haja no diretório atual dois arquivos iso file1.isoe file2.iso; o comando resultante será na verdade:

locate file1.iso file2.iso

então o shell irá executá-lo. Então, locatetentaremos encontrar arquivos contendo essas duas strings, procurando efetivamente por "*file1.iso*"ou "*file2.iso*".

É por isso que locate isoencontre mais arquivos do que locate *.iso; locateestá realmente procurando "*iso*"no primeiro caso. A solução (e a maneira correta de usá-la, IMHO) é citar os caracteres especiais do shell quando o comando aceita expressões usando-os, como o seguinte findcomando:

find /etc/ -type f -iname "*.conf"

Se houver dois ou mais arquivos conf no diretório atual e não usarmos aspas, o comando find falhará ao analisar o segundo nome de arquivo gerado, e nossa densidade de cabelo será severamente reduzida em desespero e pesquisando no Google; D porque a mensagem de erro parece não relacionado à ausência de cotações.

Responder2

Por algum motivo,

locate *.iso 

pesquisa apenas em seu diretório atual por arquivos .iso enquanto

locate "*.iso" 

pesquisa todas as suas unidades. Esta é a solução para o meu problema.

Responder3

Locate se aplica automaticamente *antes e depois da string, então a solução mais fácil é:

locate .iso

Eu também tenho duas unidades do Windows montadas. ao executar locatea partir da partição Ubuntu, obtenho resultados semelhantes aos da sua pergunta. Usando esta resposta, os resultados corretos são obtidos:

───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate "*.iso" | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate *.iso | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate .iso | wc -l
45

informação relacionada