web-dev-qa-db-fra.com

16.04 Localiser la recherche de fichiers dans / mnt

J'ai une installation 16.04 configurée avec mon dossier Téléchargements pointant sur un disque dur secondaire (affiche Downloads -> /mnt/data/Downloads). Lorsque je lance locate pour rechercher des fichiers, aucun fichier n’est affiché sur ce lecteur. J'ai exécuté un Sudo updatedb et je vérifie mon updatedb.conf (rien que je ne vois exclure le répertoire /mnt ou les fichiers que je cherche).

Ce qui est intéressant pour moi, c’est que lorsque je cd /mnt/data/Downloads puis j’exécute localise , je peux tout voir dans ce répertoire, mais pas sur mon lecteur principal. C'est presque comme si Ubuntu avait deux bases de données de localisation différentes selon le lecteur sur lequel je suis.

Comment puis-je remédier à cette situation?

Supplémentaire: Voici mon 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"

J'ai essayé de lancer Sudo locate et cela n'a pas changé les résultats. J'ai essayé de lancer mlocate et Sudo mlocate et cela n'a pas changé les résultats non plus.

J'ai aussi essayé de trouver un autre fichier updatedb.conf et je suis arrivé vide.

pdate 1: Le système de fichiers sur le lecteur secondaire est ext4.

pdate 2: Rien n'est crypté non plus. Je suis allé sur Google et j'ai remarqué que c'était un problème pour certains utilisateurs.

Mise à jour 3: Je suis plus confus maintenant. J'essaie de trouver tous les fichiers .iso sur ma machine, voici les résultats:

@: ~ $ localise FreeNAS

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

@: ~ $ localiser * .iso

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

@: ~ $ localiser iso

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

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

(et un tas d'autres résultats)

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

./ubuntu-16.04.1-server-AMD64.iso

Mise à jour 4: Plus de résultats: Sudo find/-type f -name "* .iso" me donne les résultats que je veux mais prend beaucoup de temps pour revenir avec ces résultats .

Je voulais creuser et voir si j'avais effectivement deux bases de données différentes car je reçois des résultats de localisation différents en fonction du lecteur sur lequel je me trouve. Après avoir consulté la page MAN, j'ai recherché un fichier mlocate.db sur mon système, voici mes résultats:

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

Je pensais que le fichier .VEzhqO pourrait être une base de données secondaire, alors j'ai essayé de le spécifier avec l'indicateur -d pour la commande de localisation. Cela m'a donné "ne peut pas stat" erreur. Le mystère continue.

pdate 5: Je l'ai reproduit sur une autre machine Ubuntu, édition serveur 16.04.

pdate 6: J'ai donc une solution, localisez "* .iso" mais maintenant, je suis curieux de savoir pourquoi cela fonctionne. J'ai regardé la page MAN et ces deux liens: http://www.linfo.org/locate.html et http: //www.howtogeek. com/112674/comment-trouver-fichiers-et-dossiers-dans-linux-utilisant-la-ligne de commande / . Aucune de celles-ci n'a permis de comprendre pourquoi cela fonctionne.

5
Winski Tech

Dans tous les shells, l’utilisation de *.iso étend la liste des fichiers avant d’appeler la commande.

locate *.iso

le shell développe automatiquement l'expression en créant une liste de noms de fichiers à partir des fichiers du répertoire en cours. Supposons qu'il y ait deux fichiers iso file1.iso et file2.iso dans le répertoire en cours; la commande résultante sera en réalité:

locate file1.iso file2.iso

alors le Shell l'exécutera. Ainsi, locate essaiera de trouver des fichiers contenant ces deux chaînes, en recherchant efficacement "*file1.iso*" ou "*file2.iso*".

C'est pourquoi locate iso trouve plus de fichiers que locate *.iso; locate recherche actuellement "*iso*" dans le premier cas. La solution (et la bonne façon de l'utiliser, à mon humble avis) cite les caractères spéciaux du shell lorsque la commande accepte les expressions les utilisant, comme la commande suivante find:

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

S'il y a deux fichiers ou plus dans le répertoire en cours et que nous n'utilisons pas de guillemets, la commande find échouera à analyser le deuxième nom de fichier généré et la densité de nos cheveux sera sérieusement réduite en cas de désespoir et de recherche sur Google; D car le message d'erreur semble non liée à l'absence de guillemets.

1
Fjor

Locate applique automatiquement * avant et après la chaîne, de sorte que la solution la plus simple est la suivante:

locate .iso

J'ai aussi deux disques Windows montés. Lorsque vous utilisez locate à partir de la partition Ubuntu, vous obtenez des résultats similaires à ceux de votre question. En utilisant cette réponse, les résultats corrects sont obtenus:

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

Pour certaines raisons,

locate *.iso 

recherche uniquement dans votre répertoire actuel les fichiers .iso

locate "*.iso" 

recherche dans tous vos lecteurs. C'est la solution à mon problème cependant.

0
Winski Tech