16.04 Localizar não localizar arquivos em / mnt

5

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 executo locate para pesquisar arquivos, ele não mostra arquivos nessa unidade. Eu executei um sudo updatedb e verifiquei meu updatedb.conf (nada que eu vi excluiu o diretório /mnt ou os arquivos que estou procurando)

O interessante para mim é quando eu cd /mnt/data/Downloads , em seguida, executar localizar eu posso 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á meu updatedb.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"

Eu tentei executar sudo locate e isso não alterou os resultados. Eu tentei executar mlocate e sudo mlocate e isso também não alterou os resultados.

Eu também tentei encontrar outro arquivo updatedb.conf e cheguei vazio.

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

Atualização 2: Também não há nada criptografado. Andei pesquisando e percebi que isso tem sido um problema para alguns usuários.

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

@: ~ $ localize FreeNAS

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

@: ~ $ locate * .iso

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

@: ~ $ locate iso

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

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

(e um monte de outros resultados)

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

./uibuntu-16.04.1-server-amd64.iso

Atualização 4: Mais resultados: sudo find / -tipo f -name "* .iso" me dá os resultados que eu quero, mas demora muito para voltar com esses resultados.

Eu queria entrar e ver se eu realmente tinha dois bancos de dados diferentes desde que recebi 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 no meu sistema. aqui está 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 locate. Isso me deu "não pode stat" erro. 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 "porque" isso funciona. Eu olhei para a página da MAN e esses dois links: link e link . Nada disso esclarece por que isso funciona.

    
por Winski Tech 07.09.2016 / 16:47

3 respostas

1

Em todos os shells, usar *.iso se expande para uma lista de arquivos antes de chamar o comando, então 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 lá no diretório atual dois arquivos iso file1.iso e file2.iso ; o comando resultante será realmente:

locate file1.iso file2.iso

então o shell irá executá-lo. Portanto, locate tentará encontrar arquivos contendo essas duas sequências, procurando efetivamente por "*file1.iso*" ou "*file2.iso*" .

É por isso que locate iso encontra mais arquivos que locate *.iso ; locate está realmente pesquisando por "*iso*" no primeiro caso. A solução (e o jeito certo de usar isso, IMHO) é citar os caracteres especiais do shell quando o comando aceita expressões usando-os, como o seguinte comando find :

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á analisando o segundo nome de arquivo gerado, e nossa densidade de cabelos será severamente reduzida em desespero e googling; D porque o mensagem de erro parece não estar relacionada à ausência de citações.

    
por Fjor 22.04.2017 / 09:53
0

Por algum motivo,

locate *.iso 

procura apenas no seu diretório atual por arquivos .iso enquanto

locate "*.iso" 

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

    
por Winski Tech 12.09.2016 / 16:05
0

Locate 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 locate da partição do Ubuntu, recebo resultados semelhantes à 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
    
por WinEunuuchs2Unix 19.04.2018 / 19:59