Erweiterte Dateisuche, Pfadtiefe

German support forum

Moderators: Hacker, Stefan2, white

User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Erweiterte Dateisuche, Pfadtiefe

Post by *Romaschka »

Hallo, Leute!

Problemstellung:

Suche nach bestimmten Dateien in den Profilordnern, oder anderen Ordnern der Benutzer. Die Ordner sehen folgendermassen aus:

Code: Select all

\\%servername%\profil$\XP\%benutzer%\Cookies\%benutzer%@ghisler[*.txt
Wenn man nur mit der Suche von TC sucht, sucht er ja alle Ordner durch, egal wie tief sie sind. FileX habe ich auch ausprobiert. Mit DepthLevel=5 findet man zwar die richtigen Dateien, trotzdem dauert die Suche zu lange (~4k Benutzer) da die Suche trotzdem alle Verzeichnisse durchsucht und erst später diejenigen ausschliesst, die tiefer sind. Interessant währe folgende Suchmöglichkeit:
Suche in:

Code: Select all

\\%servername%\profil$\XP\*\Cookies\
Suche nach:

Code: Select all

@ghisler
Gibt es denn diese Möglichkeit, oder habe ich sie irgend-wo übersehen?

Gruß,

Romaschka.
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

Moin!
Ich versuche den Thread aufzufrischen, vielleicht hat jemand eine gute Idee, oder Christian erhört meine Gebete :)

Griß, Roman.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Wenn ich das richtig verstehe, wäre das ein klassischer Fall für die 2-stufige Suche:

1. Zunächst ab parent-dir (servername\root?) nach Verzeichnissen (Advanced:Attr.=Dir) mit substring "Cookies" suchen.

Das geht ruck-zuck und findet alle "Cookies"-Verzeichnisse, egal in welcher Tiefe.

2. Auf <Shift>"Anwenden"/"Feed to listbox" klicken --> neues Tab mit allen "Cookies"-Verzeichnissen.

3. In diesem Tab alle Verzeichnisse - oder nur die gewünschte Untermenge - auswählen.

4. Darin erneut suchen, diesmal nach Dateien mit substring "ghisler".

HTH
algol
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

Yepp... habe ich auch schon probiert... jetzt dasselbe für 4,5k Benutzer und ein anderes Verzeichnis, das etwas tiefer sitzt und am Besten nicht im Profil- sondern Benutzer-Ordner auf dem Fileserver... Auch wenn ich es über Nacht laufen lasse, wird es zu einer Herausforderung, die _gewünschte_ Untermenge auszuwählen.

Btw. man sollte auch in die Wunsch-Feature-Liste aufnehmen, dass die Verwendung von RegEx in weitere Funktionen eingebetet werden soll, wie z.B. NUM "+" = "Auswahl erweitern". Dann klappt es auch, bei den 4,5k+ gefundenen Verzeichnissen die notwendigen Verzeichnisse zu markieren. Es bleibt trotzdem spannend, was kann ich eigentlich mit den markierten Verzeichnissen anfangen, wenn ich dorthin z.B. eine Verknüpfung verteilen möchte? (Wunsch-Thread). Die markierte Auswahl in einem neuen Tab zu öffnen währe es schon hilfreich, geht aber nicht (bitte korrigieren, wenn ich falsch liege). Wie kopiere ich aber die Verknüpfung in die gefundenen Verzeichnisse?...

Momentan weiche ich komplett auf Skripte aus, oder wenn ich schon was mit TC suche, kopiere ich die markierten Namen mit Pfaden in die Zwischenablage und bearbeite die gefundenen Objekte dann per Skript.

Schöne Grüße,

Roman.
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Romaschka,
die Verwendung von RegEx in weitere Funktionen eingebetet werden soll, wie z.B. NUM "+" = "Auswahl erweitern"
"<" voranstellen.

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Romaschka wrote:.. jetzt dasselbe für 4,5k Benutzer und ein anderes Verzeichnis, das etwas tiefer sitzt und am Besten nicht im Profil- sondern Benutzer-Ordner auf dem Fileserver
Versteh ich jetzt nicht. Heissen alle gewünschten Verzeichnisse nun irgendwie mit "cookies" als substring - wie im o.a. Beispiel - oder doch unvorhersagbar ganz anders? Und hat das 'andere', neu ins Spiel gebrachte Verzeichnis, auch irgendeinen konstanten Namensteil?

Und wieso 'dasselbe für 4,5k Benutzer'? Die sitzen doch alle in derselben parent-dir (etwa 'documents&settings') - oder etwa nicht?

Nur alle "cookies"-enthaltenden Verzeichnisnamen in einem 'documents&settings'-artigen Stammverzeichnis mit 10k user-Profilen=10k sub_dirs zu finden sollte nicht länger als 5 Minuten, maximal 1/4h dauern, wenn jegliche Dateisuche dabei unterbunden wird.

Gibt es dann 10k "cookies"-Unterverzeichnisse, kann die Dateisuche darin natürlich dauern, jedoch wüsste ich nicht, wie sich das mit RegEx reduzieren liesse, wenn jedes dieser Verzeichnisse tatsächlich - laut Beispiel - eine "ghisler"-Datei enthalten kann. Man kann doch prinzipiell nicht mehr erreichen, als ohnehin alle Verzeichnisse vorher auszuschliessen, die nicht in Frage kommen!

Bitte Problem eventuell präzisieren.

mfg
algol
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

algol wrote:Versteh ich jetzt nicht. Heissen alle gewünschten Verzeichnisse nun irgendwie mit "cookies" als substring - wie im o.a. Beispiel - oder doch unvorhersagbar ganz anders?
Es geht mir immer um die Pfade, die eigentlich immer gleich sind:

Code: Select all

\\servername\pfad\anfang\%username%\weiterer\immer\gleich\bleibender\pfad\
algol wrote:Und wieso 'dasselbe für 4,5k Benutzer'? Die sitzen doch alle in derselben parent-dir (etwa 'documents&settings') - oder etwa nicht?
Ja, z.B.

Code: Select all

\\fileservername\profil$\%username%
genau unter profil$ sitzen alle 4,5k Benutzerprofile (Roaming Profiles)
algol wrote:Nur alle "cookies"-enthaltenden Verzeichnisnamen in einem 'documents&settings'-artigen Stammverzeichnis mit 10k user-Profilen=10k sub_dirs zu finden sollte nicht länger als 5 Minuten, maximal 1/4h dauern, wenn jegliche Dateisuche dabei unterbunden wird.
Bie diesem einfachen Beispiel gebe ich Dir Recht. Jetzt versuche doch bitte bei den 10k Benutzern nach dem gleichen Prinzip das Verzeichnis "Content.IE5" zu finden. Dadurch, dass dieses nur etwas tiefer im Profil ist vervielfacht sich die Suche ungemein, auch wenn ich ganz klar vorher sagen kann, wo sich das Verzeichnis befindet, und zwar unter

Code: Select all

\\fileservername\profil$\%username%\Lokale Einstellungen\Temporary Internet Files\Content.IE5
Wenn man ohne Tiefen-Einschränkung sucht, findet man ~270 Verzeichnisse pro User in dem Profil-Verzeichnis. Die Suche pro Benutzer kann dann auch bei Ausschluß von Dateien mehrere Minuten dauern. Warum so, wenn man schon von Vornerein alle Pfade bis auf die gewünschten ausschliessen kann?

Sucht man nun nicht mehr im Profil, sondern in dem persönlichen Benutzer-Verzeichnis nach einem String, auf den auch der Benutzer selbst kommen konnte (Backup, INIs, Favoriten u.s.w), muss man damit rechnen, dass ausser der gewünschten Verzeichnisse auch zufällig die von den Usern angelegte Verzeichnisse vorkommen, die dann bereinigt werden müssten. Dies vermeidet man dadurch, dass man die technischen Pfade, die den Admins bekannt sind, für die Suche vorgibt. Beispiel:

Code: Select all

\\fileservername\user$\%username%\Daten\Technische Daten\Favoriten\
Dabei sucht man auch nicht in den restlichen Verzeichnissen, die der Benutzer ab dem root angelegt hat.
algol wrote:Man kann doch prinzipiell nicht mehr erreichen, als ohnehin alle Verzeichnisse vorher auszuschliessen, die nicht in Frage kommen!
Und genau darum geht es mir!
Hacker wrote:"<" voranstellen.
Cool! Kannte ich bis jetzt nicht! Vielen Dank!

Roman.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Romaschka wrote:Es geht mir immer um die Pfade, die eigentlich immer gleich sind:

Code: Select all

\\servername\pfad\anfang\%username%\weiterer\immer\gleich\bleibender\pfad\
Romaschka wrote:Bie diesem einfachen Beispiel gebe ich Dir Recht. Jetzt versuche doch bitte bei den 10k Benutzern nach dem gleichen Prinzip das Verzeichnis "Content.IE5" zu finden. Dadurch, dass dieses nur etwas tiefer im Profil ist vervielfacht sich die Suche ungemein, auch wenn ich ganz klar vorher sagen kann, wo sich das Verzeichnis befindet, und zwar unter

Code: Select all

\\fileservername\profil$\%username%\Lokale Einstellungen\Temporary Internet Files\Content.IE5
Dann ist eben das Stammverzeichnis "profil$" nach dem string "bleibender" (1.Beispiel) bzw. "Temporary Internet" (2.Beispiel) mit Attribut "nur Dir" zu durchsuchen. Da die Suchtiefe dabei unbegrenzt ist, müsste die Suchdauer m.E. daher unabhängig davon sein, in welcher Tiefe das Verzeichnis nun steht. Nach "Content.IE5" darf man dabei zunächst (1.Stufe) nicht suchen, denn durch den "standardwidrigen" Sonderfall, dass der Verzeichnisname einen Punkt "." enthält, geht nach meiner Beobachtung der Geschwindigkeitsvorteil einer "nur_Directory_Suche" verloren, es würde sozusagen eine normale Dateisuche daraus.

Wenn nun alle "Temp. Int. Files"-Verzeichnisse gefunden sind (tiefenunabhängig), dann sind damit auch alle "Content.IE5"-Verzeichnisse lokalisiert, da sollte sich gar nichts vervielfachen.

In allen "Temp. Int. Files"-Verzeichnissen kann nun in der 2. Stufe nach Dateien gesucht werden. Die Dateisuche dauert nun zwar wesentlich länger, dafür ist der Suchumfang aber bereits erheblich eingeschränkt, in der Praxis eigentlich nur noch auf die gewünschten Pfade.

Sollten "Temp. Int. Files" noch erheblichen Ballast - neben den gesuchten "Content.IE5"-Verzeichnissen - aufweisen, so kann bei Bedarf auch eine 3. Suchstufe zwischengeschaltet werden, in der alle "Temp. Int. Files" nach "Content" - ohne ".IE5", jedoch neuerlich mit Attr. "nur_Dir" durchsucht werden. Gleiches würde übrigens für die Vorselektion der "Technischen Pfade" (als Suchstring) in den user-Verzeichnissen zutreffen.

mfg
algol
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

Stimmt alles. Eine Möglichkeit währe noch da: RegEx in der Suche zu verwenden, dann suche ich nähmlich nur einmal nach

Code: Select all

\\fileservername\profil$\????????\Lokale Einstellungen\Temporary Internet Files\Content.IE5
wenn der User-Name standartmäßig 8 Zeichen lang ist und dann finde ich alle benötigten Verzeichnisse am Schnellsten und ohne Umwege. Und damit sind wir wieder am Anfang des Threads.

@Christian: bitte nimm das in die Wunsch-Liste für eine der nächsten Versionen auf.

Roman.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Romaschka wrote:Eine Möglichkeit währe noch da: RegEx in der Suche zu verwenden, dann suche ich nähmlich nur einmal
Diese Erweiterung würde ich auch sehr begrüssen. Ich wollte nur eine Überbrückungslösung anbieten, die jetzt schon funktioniert.

Bei der mehrstufigen Suche gibt es FYI noch einen kleinen Schönheitsfehler/bug?, den Christian mir bereits bestätigt hat und der der Behebung harrt: in der 2. (n-ten) Stufe der Suche mit einer Verzeichnis-Liste als Ausgangsbasis wird nämlich derzeit nur noch genau in diesen Listen-Verzeichnissen gesucht, nicht aber in deren Unterverzeichnissen. Anders gesagt: bei der 2. Suchstufe ist die Suchtiefe immer "0", egal was man bei "search subdirectories" einstellt, Unterverzeichnisse der Verzeichnis-Liste werden nicht durchsucht. Für die 2. (3.?) Stufe braucht man daher eine _exakte_ Liste der gewünschten Verzeichnisse/Pfade.

Eigentlich sollte, Christian zufolge, auch ab dort jeweils unlimitierte Suchtiefe möglich sein und er hat angekündigt, zu analysieren, woran das liegen könnte. Vielleicht klappt's ja schon in 7.51?

mfg
algol
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

algol wrote:Ich wollte nur eine Überbrückungslösung anbieten, die jetzt schon funktioniert.

Bei der mehrstufigen Suche gibt es FYI noch einen kleinen Schönheitsfehler/bug?, den Christian mir bereits bestätigt hat und der der Behebung harrt: in der 2. (n-ten) Stufe der Suche mit einer Verzeichnis-Liste als Ausgangsbasis wird nämlich derzeit nur noch genau in diesen Listen-Verzeichnissen gesucht, nicht aber in deren Unterverzeichnissen. Anders gesagt: bei der 2. Suchstufe ist die Suchtiefe immer "0", egal was man bei "search subdirectories" einstellt, Unterverzeichnisse der Verzeichnis-Liste werden nicht durchsucht. Für die 2. (3.?) Stufe braucht man daher eine _exakte_ Liste der gewünschten Verzeichnisse/Pfade.
Dann geht die Umgehungslösung ja nicht, da ich gerade in den Unterverzeichnissen von Content.IE5 nach bestimmten Dateien suche :(

Trotzdem vielen Dank für die Mühe.

Roman.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Romaschka wrote:Dann geht die Umgehungslösung ja nicht, da ich gerade in den Unterverzeichnissen von Content.IE5 nach bestimmten Dateien suche :(
Doch, sie geht, wenn auch ziemlich mühsam. Immerhin ist sie dabei noch um Klassen schneller als eine brute-force Dateisuche.

Vorausschicken muss ich dabei (wir verwenden IE nur, wo unbedingt nötig, lieber Opera oder FireFox, aber es gibt auch "unbelehrbare" user), dass in den mir bekannten Umgebungen die (daher relativ wenigen) "Content.IE5" Verzeichnisse immer nur noch genau eine Ebene von Unterverzeichnissen enthalten, auch wenn das viele sein können.

Sobald also (1.Stufe) alle "Temp. Int. Files"-Pfade lokalisiert sind, wird in der Liste nach "Content"/Attr.=Dir gesucht (2.Stufe->Liste mit allen "Content.IE5" Verz.). Darauf sucht man nach <leer>/Attr.=Dir (3.Stufe->explizite Liste aller "Content.IE5-Subdirs" mit beliebigen Namen für die Dateisuche). In dieser Liste erfolgt in der 4.Stufe die eigentliche Dateisuche bzw. kann vorher mit neuerlich "<leer>/Attr.=Dir " überprüft werden, dass tatsächlich keine weitere Ebene von Unterverzeichnissen existiert. Falls das zutrifft, werden bei der Dateisuche trotz "Suchtiefe 0" nun alle gewünschten files aufgespürt.

Das hört sich in der Erklärung wesentlich komplizierter an, als es ist. In der Praxis dauern die beiden mittleren, zusätzlichen Suchstufen vielleicht je 1 Minute.

mfg
algol
User avatar
Romaschka
Junior Member
Junior Member
Posts: 87
Joined: 2003-04-14, 08:44 UTC
Location: Hannover

Post by *Romaschka »

Gut, einverstanden. Bei disem Beispiel geht das wirklich. Wie löst Du denn folgendes:
\\server\%user%\Favoriten durchsuchen alle Dateien in den Favoriten und den Unterordnern nach einem bestimmten String?
Ich bekomme zwar alle Order "Favoriten" ziemlich schnell aufgelistet und auch die Dateien, die in dem gleichen Ordner sich befinden, aber nicht in den Unterordnern?

Gruß,

Roman.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Romaschka wrote:Ich bekomme zwar alle Order "Favoriten" ziemlich schnell aufgelistet und auch die Dateien, die in dem gleichen Ordner sich befinden, aber nicht in den Unterordnern?
Da kannst Du nur, wie ich übrigens auch, auf TC_7.51 hoffen.

Christian hat das Problem mir gegenüber in einer persönlichen mail vom Herbst_09 bestätigt und angekündigt, sich der Sache anzunehmen.

Da 7.51 AFAIK eigentlich nur als "minor update/bugfix release" angedacht war, kann ich allerdings nicht versprechen, ob das da schon "drin" sein wird.

Allerdings herrscht - für meine Begriffe - schon ungewöhnlich lange Schweigen. Und von der "Private Beta Task Force" verrät ja auch keiner, wie lange die schon am Werken sind. Aber es "raschelt" bereits im Blätterwald und dürfte bald soweit sein.

Ob das nun heisst, dass 7.51 doch grösser geworden ist und daher erhöhte Hoffnung betreffs Suche besteht - oder ob mein persönlicher Verdacht zutrifft, dass Christian in einer geheimen Hexenküche längst mit Hochdruck an einer echten 64_bit-Version des TC arbeitet und der reguläre Betrieb daher etwas langsamer läuft, kann ich naturgemäss nicht sagen.

Bis zur Lösung des Suche-Problems kannst Du natürlich auch hier wieder mit der Mehrstufen-Iterations-Notlösung arbeiten, also jeweils mit <leer>/Attr.=Dir alle Subdirs der jeweiligen Ebene explizit auflisten - und darin dann ganz normal mit <leer>/"Find Text"/Attr.=NOT Dir nach Strings in Dateien suchen. Falls die einzelnen user-"Favoriten"-Verzeichnisse i.d.R. aber mehr als 3 weitere Unterverzeichnis-Ebenen haben sollten, wird es irgendwann extrem mühsam bis prohibitiv.

HTH
algol
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50746
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Ja, das Problem ist inzwischen behoben. Die Betatester der 7.51-Version können das gerne schon testen (Suchen nach Verzeichnissen -> Anwenden -> Ordner markieren -> Suchen in markierten -> Angeben, x Verzeichnisse tief suchen).
Author of Total Commander
https://www.ghisler.com
Post Reply