it-swarm.com.de

16.04 Suchen Sie nach Dateien, die in / mnt nicht gefunden werden

Ich habe eine 16.04-Installation eingerichtet, bei der mein Download-Ordner auf eine sekundäre Festplatte zeigt (zeigt Downloads -> /mnt/data/Downloads). Wenn ich locate starte, um nach Dateien zu suchen, werden auf diesem Laufwerk keine Dateien angezeigt. Ich habe einen Sudo updatedb ausgeführt und überprüfe meinen updatedb.conf (nichts, was ich sehe, schließt das /mnt -Verzeichnis oder die von mir gesuchten Dateien aus)

Das Interessante für mich ist, wenn ich dann cd /mnt/data/Downloads starte locate , kann ich alles in diesem Verzeichnis sehen, aber nicht auf meinem primären Laufwerk. Es ist fast so, als hätte Ubuntu zwei verschiedene Locate-Datenbanken, je nachdem, auf welchem ​​Laufwerk ich mich befinde.

Wie kann ich Abhilfe schaffen?

Zusätzlich : Hier ist mein 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"

Ich habe versucht, Sudo locate auszuführen, und das hat die Ergebnisse nicht verändert. Ich habe versucht, mlocate und Sudo mlocate auszuführen, und das hat auch nichts an den Ergebnissen geändert.

Ich habe auch versucht, eine andere updatedb.conf -Datei zu finden und war leer.

Update 1: Das Dateisystem auf dem sekundären Laufwerk ist ext4.

Update 2: Auch nichts ist verschlüsselt. Ich habe herumgegoogelt und festgestellt, dass dies für einige Benutzer ein Problem darstellt.

Update 3: Ich bin jetzt verwirrter. Ich versuche, alle .iso-Dateien auf meinem Computer zu finden. Im Folgenden sind die Ergebnisse aufgeführt:

@: ~ $ finde 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

(und ein paar andere Ergebnisse)

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

./ubuntu-16.04.1-server-AMD64.iso

Update 4: Weitere Ergebnisse: Sudo find/-type f-name "* .iso" gibt mir die gewünschten Ergebnisse, aber es dauert lange, bis ich mit diesen Ergebnissen zurückkomme.

Ich wollte nachsehen, ob tatsächlich zwei verschiedene Datenbanken vorhanden sind, da ich je nach Laufwerk unterschiedliche Suchergebnisse erhalte. Nachdem ich die Seite MAN überprüft hatte, suchte ich nach einer mlocate.db-Datei auf Mein System, hier sind meine Ergebnisse:

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

Ich hielt es für möglich, dass die .VEzhqO-Datei eine sekundäre Datenbank ist. Deshalb habe ich versucht, dies mit dem Flag -d für den Befehl locate anzugeben. Das gab mir "Kann nicht stat" Fehler. Das Rätsel geht weiter.

Update 5: Ich habe dies auf einer anderen Ubuntu-Maschine, 16.04 Server Edition, reproduziert.

Update 6: Ich habe also eine Lösung, finde "* .iso", aber jetzt bin ich gespannt, "warum" das funktioniert. Ich habe mir die Seite MAN und diese beiden Links angesehen: http://www.linfo.org/locate.html und http: //www.howtogeek. com/112674/wie-Dateien-und-Ordner-unter-Linux-Verwendung-der-Befehlszeile-zu-finden / . Keines von diesen gibt Aufschluss darüber, warum das funktioniert.

5
Winski Tech

In allen Shells wird die Verwendung von *.iso zu einer Liste von Dateien erweitert, bevor der Befehl aufgerufen wird

locate *.iso

die Shell erweitert automatisch den Ausdruck, indem sie eine Dateinamenliste aus Dateien im aktuellen Verzeichnis erstellt. Angenommen, es gibt im aktuellen Verzeichnis zwei ISO-Dateien file1.iso und file2.iso; Der resultierende Befehl lautet tatsächlich:

locate file1.iso file2.iso

dann wird die Shell es ausführen. Also versucht locate, Dateien zu finden, die diese beiden Zeichenfolgen enthalten, und sucht effektiv nach "*file1.iso*" oder "*file2.iso*".

Das ist der Grund, warum locate iso mehr Dateien findet als locate *.iso; locate sucht im ersten Fall tatsächlich nach "*iso*". Die Lösung (und der richtige Weg, es zu verwenden, IMHO) ist, die Sonderzeichen der Shell in Anführungszeichen zu setzen, wenn der Befehl Ausdrücke akzeptiert, die sie verwenden, wie den folgenden Befehl find:

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

Wenn sich zwei oder mehr conf-Dateien im aktuellen Verzeichnis befinden und keine Anführungszeichen verwendet werden, schlägt der Befehl find beim Parsen des zweiten generierten Dateinamens fehl, und unsere Haardichte verringert sich erheblich in Verzweiflung und googelt; D, weil die Fehlermeldung angezeigt wird nicht im Zusammenhang mit dem Fehlen von Anführungszeichen.

1
Fjor

Locate wendet * automatisch vor und nach der Zeichenfolge an, sodass die einfachste Lösung lautet:

locate .iso

Ich habe auch zwei Windows-Laufwerke gemountet. Wenn Sie locate von einer Ubuntu-Partition ausführen, erhalte ich ähnliche Ergebnisse wie Ihre Frage. Mit dieser Antwort erhalten Sie die richtigen Ergebnisse:

───────────────────────────────────────────────────────────────────────────────────────────
[email protected]:~/Downloads/cfiles$ locate "*.iso" | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
[email protected]:~/Downloads/cfiles$ locate *.iso | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
[email protected]:~/Downloads/cfiles$ locate .iso | wc -l
45
0

Aus irgendeinem Grund,

locate *.iso 

durchsucht währenddessen nur Ihr aktuelles Verzeichnis nach .iso-Dateien

locate "*.iso" 

durchsucht alle Ihre Laufwerke. Dies ist jedoch die Lösung für mein Problem.

0
Winski Tech