16.04 Localizar no encontrar archivos en /mnt

16.04 Localizar no encontrar archivos en /mnt

Tengo una instalación 16.04 configurada con mi carpeta de Descargas apuntando a un disco duro secundario (se muestra Downloads -> /mnt/data/Downloads). Cuando corro locatepara buscar archivos, no muestra ningún archivo en esta unidad. Ejecuté sudo updatedby revisé mi updatedb.conf(nada de lo que veo excluyó el /mntdirectorio o los archivos que estoy buscando)

Lo interesante para mí es cuando cd /mnt/data/Downloadsluego corrolocalizarPuedo ver todo en este directorio pero no en mi disco principal. Es casi como si Ubuntu tuviera dos bases de datos de ubicación diferentes según la unidad en la que me encuentre.

¿Cómo puedo remediar esta situación?

Adicional: Aquí está miupdatedb.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"

Intenté ejecutar sudo locatey eso no cambió los resultados. Intenté ejecutar mlocatey sudo mlocateeso tampoco cambió los resultados.

También intenté buscar otro updatedb.confarchivo y no encontré nada.

Actualización 1:El sistema de archivos en la unidad secundaria es ext4.

Actualización 2:Tampoco hay nada cifrado. Estuve buscando en Google y noté que esto ha sido un problema para algunos usuarios.

Actualización 3:Estoy más confundido ahora. Estoy intentando encontrar todos los archivos .iso en mi máquina, a continuación se muestran los resultados:

@:~$ localizar FreeNAS

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

@:~$ localizar *.iso

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

@:~$ localizar iso

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

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

(y muchos otros resultados)

@:~$ encontrar. -tipo f -nombre "*.iso"

./ubuntu-16.04.1-servidor-amd64.iso

Actualización 4:Más resultados:sudo buscar / -tipo f -nombre "*.iso"Me da los resultados que quiero pero lleva mucho tiempo volver a obtener esos resultados.

Quería profundizar y ver si realmente tenía dos bases de datos diferentes, ya que obtengo diferentes resultados de localización según la unidad en la que estoy. Después de comprobar la página MAN, busqué un archivo mlocate.db en mi sistema, aquí están mis resultados. :

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

Estaba pensando que era posible que el archivo .VEzhqO fuera una base de datos secundaria, así que intenté especificarlo con el indicador -d para el comando de localización. Eso me dio el error "no se puede iniciar". El misterio continúa.

Actualización 5:He reproducido esto en otra máquina Ubuntu, edición de servidor 16.04.

Actualización 6:Entonces tengo una solución, localice "*.iso", pero ahora tengo curiosidad por saber "por qué" funciona. Miré la página MAN y estos dos enlaces:http://www.linfo.org/locate.htmlyhttp://www.howtogeek.com/112674/how-to-find-files-and-folders-in-linux-using-the-command-line/. Ninguno de estos arroja ninguna luz sobre por qué funciona.

Respuesta1

En todos los shells, el uso *.isose expande a una lista de archivos antes de llamar al comando, por lo que en

locate *.iso

el shell expande automáticamente la expresión creando una lista de nombres de archivos a partir de archivos en el directorio actual. Supongamos que en el directorio actual hay dos archivos iso file1.isoy file2.iso; el comando resultante en realidad será:

locate file1.iso file2.iso

entonces el shell lo ejecutará. Por lo tanto, locateintentaremos encontrar archivos que contengan estas dos cadenas, buscando efectivamente "*file1.iso*"o "*file2.iso*".

Por eso locate isobusca más archivos que locate *.iso; locateen realidad está buscando "*iso*"en el primer caso. La solución (y la forma correcta de usarla, en mi humilde opinión) es citar los caracteres especiales del shell cuando el comando acepta expresiones que los usan, como el siguiente findcomando:

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

Si hay dos o más archivos conf en el directorio actual y no usamos comillas, el comando de búsqueda fallará al analizar el segundo nombre de archivo generado, y nuestra densidad de cabello se reducirá severamente por la desesperación y la búsqueda en Google; D porque el mensaje de error parece no relacionado con la ausencia de comillas.

Respuesta2

Por alguna razón,

locate *.iso 

solo busca en su directorio actual archivos .iso mientras

locate "*.iso" 

busca en todas sus unidades. Sin embargo, esta es la solución a mi problema.

Respuesta3

La localización se aplica automáticamente *antes y después de la cadena, por lo que la solución más sencilla es:

locate .iso

También tengo dos unidades de Windows montadas. cuando ejecuto locatedesde la partición de Ubuntu obtengo resultados similares a los de su pregunta. Usando esta respuesta se obtienen los resultados correctos:

───────────────────────────────────────────────────────────────────────────────────────────
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

información relacionada