Gibt es eine schnelle Suchfunktion für Dateien?
Also ich habe noch mal einen Ansatz mit Gambas gemacht. Das ganze basiert immer noch auf find, aber dieses mal wieder ohne eine Datenbank zu machen.
Ich habe mir den Quellcode von pfind mal angesehen. Sie verlieren viel Zeit mit dem zwischenspeichern der Dateien und GTK frisst wohl auch noch mal ein wenig davon.
Aber das geht wohl nicht anders, wenn man Shell-Script nutzt.
Man könnte die gesamte Suchfunktion in Variablen (statt in Textdateien) legen.
Aber viel schneller wird das nicht mehr.
Aber das offizielle Interesse daran ist vorbei oder?
Für die gambas Datei braucht man wieder die gambas3-runtime.
Ich habe mir den Quellcode von pfind mal angesehen. Sie verlieren viel Zeit mit dem zwischenspeichern der Dateien und GTK frisst wohl auch noch mal ein wenig davon.
Aber das geht wohl nicht anders, wenn man Shell-Script nutzt.
Man könnte die gesamte Suchfunktion in Variablen (statt in Textdateien) legen.
Aber viel schneller wird das nicht mehr.
Aber das offizielle Interesse daran ist vorbei oder?
Für die gambas Datei braucht man wieder die gambas3-runtime.
- Attachments
-
- suchdas.tar.gz
- Ansatz für eine Suchfunktion mit Gambas. Taugt das was?
Die gambas3-runtime muß installiert sein. - (1.77 KiB) Downloaded 299 times
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Na ja, ich denke meine Angabe war ein wenig ungenau, da Plattenkapazität und verbleibender freier Speicher für sich alleine genommen eher wenig Aussagekraft haben.Hai, also ich habe hier 1TB Festplatte die zur Hälfte voll ist und die Suche ist genauso schnell. Vielleicht liegt es ja an was anderem?
Es kommt maßgeblich darauf an, aus wieviel Dateien der belegte Speicherplatz besteht.
Ich habe hier: 858 G (1.345.703 Dateien, 156.406 Ordner).
Was hast Du?
RSH
[b][url=http://lazy-puppy.weebly.com]LazY Puppy[/url][/b]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]
So, hier habe ich mal zusammengesucht was ich weiß. Allerdings weiß ich garnicht, wie man die Anzahl der Ordner ermittelt.
Also die Suche mit:
ergab:
Die Suche dauerte:
Mit Gparted habe ich das hier bekommen:
Das sind natürlich heftige Unterschiede. Hast du recht. Ich habe mich da wohl ein wenig hinreißen lassen.
Ja, damit bin ich raus, dann habe ich keine Ahnung.
___________________________________________
Das Purebasic hatte ich damals mal probiert, aber ich kam schwer damit zurecht. Es gabe viele undurchsichtige Meldungen. Das lag vielleicht daran, dass es eine Demoversion war? Oder das ich keinen Schimmer habe. Ich kenne Basic auch kaum bis garnicht.
Irgendwas war auch mit dem Purebasic Forum. Alles zusammen, habe ich dann alles in der Richtung verworfen.
Mit Gambas wurde vieles einfacher. Ich bin immer noch ein Anfänger und froh, dass die Dinge immer besser laufen. Die Hilfe ist fantastisch und verständlich.
Na ja, und letztlich werde ich kaum die Programme verkaufen oder irgendwie weitergeben. Ich wünschte mir nur mal, dass einer die Sachen mal testet. Damit ich hier mal über meinen Tellerrand gucken kann.
Also die Suche mit:
Code: Select all
find /mnt/sdb1/ -iname '*'
Code: Select all
Dateienanzahl: 74330
Code: Select all
real 0m7.302s
user 0m0.753s
sys 0m1.473s
Code: Select all
Festplattengröße: 931,5 GB
Benutzt: 472.43 GB
Unbenutzt: 459.08 GB
Dateisystem: ntfs

Ja, damit bin ich raus, dann habe ich keine Ahnung.
___________________________________________
Das Purebasic hatte ich damals mal probiert, aber ich kam schwer damit zurecht. Es gabe viele undurchsichtige Meldungen. Das lag vielleicht daran, dass es eine Demoversion war? Oder das ich keinen Schimmer habe. Ich kenne Basic auch kaum bis garnicht.
Irgendwas war auch mit dem Purebasic Forum. Alles zusammen, habe ich dann alles in der Richtung verworfen.
Mit Gambas wurde vieles einfacher. Ich bin immer noch ein Anfänger und froh, dass die Dinge immer besser laufen. Die Hilfe ist fantastisch und verständlich.
Na ja, und letztlich werde ich kaum die Programme verkaufen oder irgendwie weitergeben. Ich wünschte mir nur mal, dass einer die Sachen mal testet. Damit ich hier mal über meinen Tellerrand gucken kann.
Ich meine den gibt es so gar nicht in Linux. In den Inodes stehen zwar einige Dateieigenschaften, aber nicht der Dateiname. Da eine Datei via Hardlink auch mehrere verschiedene Namen haben kann...der-schutzhund wrote:Weiß jemand wie man die Dateinamen aus dem Master File Table (MTF) lesen kann?
[color=blue][size=75]Toshiba Satallite M30X-124 | ATI Mobility Radeon 9700 | Intel PRO/Wireless 2200BG
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Der Master File Table ist der Speicherbereich auf einer NTFS-Partition in dem alle Infos der Dateien stehen. Die stehen da, egal ob man aus Windows oder Linux oder sonst einem Betriebssystem darauf zu greift!antilet wrote:Ich meine den gibt es so gar nicht in Linux. In den Inodes stehen zwar einige Dateieigenschaften, aber nicht der Dateiname. Da eine Datei via Hardlink auch mehrere verschiedene Namen haben kann...der-schutzhund wrote:Weiß jemand wie man die Dateinamen aus dem Master File Table (MTF) lesen kann?
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Bekomme es nicht kompiliert!Karl Godt wrote:Weiss ich jetzt nicht .. Meine find.db.text ist
bash-3.00# wc -l find.db.text
403818 find.db.text
~400.000 Zeilen lang ..
bash-3.00# ls -s --block-size=K find.db.text
21352K find.db.text
bash-3.00# ls -s --block-size=M find.db.text
21M find.db.text
*
Das hier ist nun mlocate :
http://packages.debian.org/source/sid/mlocate
Kompilliert gut auf meiner Puppy-4 , einfachin der Sossen-Kanne .. sehr sehr fix !Code: Select all
./configure ; make ; new2dir make install ; addgroup -S -g 2120 mlocate ; updatedb ; locate -i -e "*locate*"
Bierher-Dateien sind aber benannt " locate " und " updatedb " und nicht " mlocate " und " mupdatedb " -- also aufgepasst , solte etwas (nicht) ueberschrieben werden .
ls -s --block-size=M /usr/local/var/mlocate/mlocate.db
8M /usr/local/var/mlocate/mlocate.db
Kannst du mal das pet hochladen ... bitte?
LG
Wolfgang
Hattest du das irgendwo geschrieben, dass du auf einer NTFS-Partition suchen willst, dann habe ich es überlesen - bei Linux gehe ich zumindest von ext aus...der-schutzhund wrote: Der Master File Table ist der Speicherbereich auf einer NTFS-Partition in dem alle Infos der Dateien stehen. Die stehen da, egal ob man aus Windows oder Linux oder sonst einem Betriebssystem darauf zu greift!
[color=blue][size=75]Toshiba Satallite M30X-124 | ATI Mobility Radeon 9700 | Intel PRO/Wireless 2200BG
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Hm, vielleicht habe ich Tomaten auf den Augen, ich sehe nicht wo du geschrieben hast, dass du unter NTFS suchen willst. Du hast allerdings viele Vergleiche zu NTFS gezogen. Ich war davon ausgegangen, dass du etwas vergelichbares wie du für Win hast nun auch für Linux suchst.der-schutzhund wrote:Ja, ein paar Beiträge weiter oben!
Wie dem auch sei. Ich glaube nicht, dass es für Linux ein Suchtool gibt, dass auf das Suchen in NTFS-Verzeichnissen spezialisert ist.
Cached (p)find Informationen? Wenn ja wo?
Kann man es nicht aus den deb-Repository laden und dann mit deb2pet in ein pet oder sfs konvertieren?der-schutzhund wrote:Bekomme es nicht kompiliert!
[color=blue][size=75]Toshiba Satallite M30X-124 | ATI Mobility Radeon 9700 | Intel PRO/Wireless 2200BG
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
Most Linux need special boot options to boot on this laptop: i8042.nomux=1 highres=off nohz=off irqpoll[/size][/color]
Kannst du mal das pet hochladen ... bitte?
- Attachments
-
- mlocate-0.26-i486.pet
- (42.06 KiB) Downloaded 351 times
-
- mlocate_NLS-0.26-i486.pet
- (55.2 KiB) Downloaded 359 times
-
- mlocate_DOC-0.26-i486.pet
- (6.05 KiB) Downloaded 351 times
- L18L
- Posts: 3479
- Joined: Sat 19 Jun 2010, 18:56
- Location: www.eussenheim.de/
mlocate
Code: Select all
# time updatedb
real 0m3.294s
user 0m0.407s
sys 0m1.187s
#
# time locate bark
/initrd/pup_ro2/usr/share/audio/2barks.au
/initrd/pup_ro2/usr/share/audio/2barks.wav
/initrd/pup_ro2/usr/share/audio/bark.au
/initrd/pup_ro2/usr/share/sounds/2barks.au
/initrd/pup_ro2/usr/share/sounds/bark.au
/usr/share/audio/2barks.au
/usr/share/audio/2barks.wav
/usr/share/audio/bark.au
/usr/share/sounds/2barks.au
/usr/share/sounds/bark.au
real 0m1.258s
user 0m0.863s
sys 0m0.023s
#

Edit
Zum Vergleich:
Code: Select all
# time find / -name *bark*
/usr/share/audio/2barks.au
/usr/share/audio/2barks.wav
/usr/share/audio/bark.au
/usr/share/sounds/2barks.au
/usr/share/sounds/bark.au
/initrd/pup_ro2/usr/share/audio/2barks.au
/initrd/pup_ro2/usr/share/audio/2barks.wav
/initrd/pup_ro2/usr/share/audio/bark.au
/initrd/pup_ro2/usr/share/sounds/2barks.au
/initrd/pup_ro2/usr/share/sounds/bark.au
real 0m5.088s
user 0m1.020s
sys 0m1.300s
#
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
@Karl
War mal etwas weg.
Habe gerade die 3 pets geladen und folgendes getestet:
time find / >find.db.text
dauert ca. 4 Minuten. Die Datenbank ist ca. 52 MB groß
time find / -name *geany*
dauert bei mir ca. 16 sek.
Wenn ich das richtig verstehe sind das aber die ganz normalen Suchbefehle und haben nichts mit deinen Pets zu tun?
Wie wären denn nochmal die Befehle:
- zum erzeugen der Datenbank
- Update dieser Datenbank falls es diese Funktion gibt
- Suchfunktion in der Datenbank?
War mal etwas weg.
Habe gerade die 3 pets geladen und folgendes getestet:
time find / >find.db.text
dauert ca. 4 Minuten. Die Datenbank ist ca. 52 MB groß
time find / -name *geany*
dauert bei mir ca. 16 sek.
Wenn ich das richtig verstehe sind das aber die ganz normalen Suchbefehle und haben nichts mit deinen Pets zu tun?
Wie wären denn nochmal die Befehle:
- zum erzeugen der Datenbank
- Update dieser Datenbank falls es diese Funktion gibt
- Suchfunktion in der Datenbank?
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Oh, Hallo Wolfgang !
Yup , hast recht , dass einfach --prefix=/usr auch in der Regel /usr/var in Hinsicht der --localestatedir bedeuted . Und in dem Haupt .pet ist der Ordner /usr/var nicht enthalten gewesen , oder gar ein Link nach /var .
Um einen Ordner anzulegen , kann man den Filemanager nutzen oder den Terminal :
oder als link
War auch weg und habe jetzt erst gemerkt, dass Du geantworted hast .
Hmm, es scheint bei den ca. dreissig downloads selbststaendigere oder erfahrenere Leute dabei gewesen zu sein, oder die sind in Repositorien gelandet und nicht auch noch installiert worden .
Lutz18L jedenfalls scheint Probleme selbst geloest zu haben , oder seine Installation kommt standardmaessig mit /usr/var undoder /usr/local/var .
Yup , hast recht , dass einfach --prefix=/usr auch in der Regel /usr/var in Hinsicht der --localestatedir bedeuted . Und in dem Haupt .pet ist der Ordner /usr/var nicht enthalten gewesen , oder gar ein Link nach /var .
Um einen Ordner anzulegen , kann man den Filemanager nutzen oder den Terminal :
Code: Select all
mkdir -p /usr/var/mlocate
Code: Select all
ln -s /var /usr/var
Hmm, es scheint bei den ca. dreissig downloads selbststaendigere oder erfahrenere Leute dabei gewesen zu sein, oder die sind in Repositorien gelandet und nicht auch noch installiert worden .
Lutz18L jedenfalls scheint Probleme selbst geloest zu haben , oder seine Installation kommt standardmaessig mit /usr/var undoder /usr/local/var .
-
- Posts: 1045
- Joined: Mon 26 Nov 2007, 22:07
- Location: Blomberg / Germany
Tja, werde mal dann eine lupu booten muessen .
Einzigst witheout-Flagg-Schnipsel oder Berechtigungen fielen mir dazu auf_anhieb ein .
Und vielleicht um updatedb zu ueberlisten , einen leeren Ruehr-Futzel creieren :
Jedenfalls ein kurzer Test durch
und ein updatedb meckerte nicht ueber einen fehlenden Database-Brocken .
Wenn ich allse wuesste, waere ich in Hollywood und nicht hier . Am besten ist immer der direkte Zugang bei Trubel .
Einzigst witheout-Flagg-Schnipsel oder Berechtigungen fielen mir dazu auf_anhieb ein .
Code: Select all
find /initrd/pup_rw -name "*.wh.*"
find /initrd/pup_ro1-name "*.wh.*"
whoami
find /usr -type d -name "var" -exec ls -lR {} \; | grep -i 'locate'
ls -lR /var | grep -i 'locate'
grep -nHi 'locate' /etc/group /etc/gshadow
Code: Select all
touch /usr/var/mlocate/mlocate.db
Code: Select all
mv -i /usr/var/mlocate/mlocate.db /usr/var/mlocate/mlocate.db-old
Wenn ich allse wuesste, waere ich in Hollywood und nicht hier . Am besten ist immer der direkte Zugang bei Trubel .
So, hab jetzt ein Lupu-511 Derivat hochgeschossen , das Haupt- .pet von hier kopiert (heruntergeladen) , darauf links-geklickt und akzeptiert, es zu installieren :
[ .. ]
Gruppe 9876 is (natuerlich) Ermessenssache ; hatte kurz im Inter-Netz recherchiert, ob es bei den grossen Distros irgend einen stillschewigenden Usus ueber eine allgemein distro-uebergreifende Gruppen-ID-Nummer gaebe, und nichts gefunden - auch in dem regulaeren .deb aus der Debian-Squeeze-Repo nicht .
apt-get scheint dies ueber einen zentralen Konfigurations-Mechanismus zu bewerkstelligen . Ich habe nur Puppy-Linux, und kann darum nicht sagen, wie andere GNU/Linux Operations-Systeme diese Gruppen-ID handhaben .
HDH soweit erstmal .
Gruss, Karl
Code: Select all
# locate geany
locate: can not stat () `/usr/var/mlocate/mlocate.db': No such file or directory
# mkdir -p /usr/var/mlocate
# locate geany
locate: can not stat () `/usr/var/mlocate/mlocate.db': No such file or directory
# touch /usr/var/mlocate/mlocate.db
# locate geany
locate: unexpected EOF reading `/usr/var/mlocate/mlocate.db'
# echo "" >/usr/var/mlocate/mlocate.db
# locate geany
locate: unexpected EOF reading `/usr/var/mlocate/mlocate.db'
# echo -e "\n" >/usr/var/mlocate/mlocate.db
# locate geany
locate: unexpected EOF reading `/usr/var/mlocate/mlocate.db'
# echo -e "Dummy\n" >/usr/var/mlocate/mlocate.db
# locate geany
locate: unexpected EOF reading `/usr/var/mlocate/mlocate.db'
# updatedb
updatedb: can not find group `mlocate'
# addgroup -S -g 9876 mlocate
# updatedb
# locate geany
/initrd/mnt/dev_save/Pet.D/tmp/langpack_de-20130204/usr/share/doc/nls/geany
/initrd/mnt/dev_save/Pet.D/tmp/langpack_de-20130204/usr/share/doc/nls/geany/geany.pot
Gruppe 9876 is (natuerlich) Ermessenssache ; hatte kurz im Inter-Netz recherchiert, ob es bei den grossen Distros irgend einen stillschewigenden Usus ueber eine allgemein distro-uebergreifende Gruppen-ID-Nummer gaebe, und nichts gefunden - auch in dem regulaeren .deb aus der Debian-Squeeze-Repo nicht .
apt-get scheint dies ueber einen zentralen Konfigurations-Mechanismus zu bewerkstelligen . Ich habe nur Puppy-Linux, und kann darum nicht sagen, wie andere GNU/Linux Operations-Systeme diese Gruppen-ID handhaben .
changelog.Debian wrote:mlocate (0.18-1) experimental; urgency=low
* Initial release. (Closes: #435787)
* Create a "mlocate" group, and make the locate binary setgid on postinst
(with dpkg-statoverride).
Was GID und SID anbelangt, muesste ich mich mal weiterbilden ..README wrote:new releases will be available at https://fedorahosted.org/mlocate/ .
Installation
============
Before installation it is necessary to create a group called "mlocate" to allow
hiding the contents of the database from users.
When updatedb is run by root, the database contains names of files of all
users, but only members of the "mlocate" group may access it. "locate" is
installed set-GID "mlocate", no other program should need to run with this GID.
HDH soweit erstmal .
Gruss, Karl