TC 704a Suche verhält sich seltsam

German support forum

Moderators: Hacker, Stefan2, white

Deluxe23
New Member
New Member
Posts: 1
Joined: 2006-09-09, 16:26 UTC

TC 704a Suche verhält sich seltsam

Post by *Deluxe23 »

Hallo, habe eine Datei in einem Verzeichnis liegen, z.B.
DPM Aufgaben Daten-und Prozessmodellierung.rar

Ich suche nun mit ALT+F7 in genau diesem Verzeichnis nach dieser Datei mit dem Ergebnis, dass diese nicht gefunden wird. Erst wenn ich die Endung .rar im Suchfeld entferne, wird die Datei gefunden ?!

Feature ?! Bug ?!
User avatar
Dalai
Power Member
Power Member
Posts: 10003
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Du musst Anführungszeichen benutzen, damit die Datei gefunden wird. Steht auch so in der Hilfe:
TC Hilfe wrote:Namen mit Leerzeichen MÜSSEN in doppelten Anführungszeichen geschrieben werden, also z.B. "Brief an Meier wegen Bestellung.doc", sonst sucht Total Commander nach den einzelnen Namensbestandteilen.
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Deluxe23.

Der Total Commander 7.50 findet Dateien und Verzeichnisse, deren Namen Leerzeichen enthalten, auch dann, wenn man sie im Suchen-Dialog nicht mit doppelten Anführungszeichen eingeschlossen hat. (Kann man natürlich immer noch tun.)

==> Saerching can't find existing files w. specific name (Für den Buchstabendreher im Titel kann ich nichts.)

Grüße,
Karl
TWatcher
Junior Member
Junior Member
Posts: 43
Joined: 2008-08-26, 18:46 UTC

Post by *TWatcher »

Hmm...
laut Hilfe:
Neu: Namen mit Leerzeichen müssen nicht mehr unbedingt in doppelten Anführungszeichen geschrieben werden, also z.B. Brief an Meier wegen Bestellung.doc. Total Commander sucht nun sowohl nach den einzelnen Namensbestandteilen, als auch nach dem kompletten Namen.
...
Beispiele:
...
meier findet z.B. Brief an Meier wegen Bestellung.doc
Die Datei 'Brief an Meier wegen Bestellung.doc' wird gefunden wenn man nach 'Brief', 'Meier', 'Brief an Meier' oder 'an Meier' sucht.
Die Datei 'Brief an Meier wegen Bestellung.doc' wird jedoch *nicht* gefunden, wenn man zB nach 'Brief Meier' oder 'Meier Bestellung' sucht.
(Eingabe jeweils ohne Anführungszeichen).
Warum? Sollten nicht alle Dateien gefunden werden, die entweder 'Brief' oder 'Meier' im Dateinamen haben?
Gibt es hier eventuell ein Konflikt mit dem neuen Feature "Namen mit Leerzeichen müssen nicht mehr unbedingt in doppelten Anführungszeichen geschrieben werden"?
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Warum? Sollten nicht alle Dateien gefunden werden, die entweder 'Brief' oder 'Meier' im Dateinamen haben?
Hätte ich auch erwartet.

Bzw ich hätte erwartet das alle Dateien gefunden werden, die 'Brief' und 'Meier' im Dateinamen haben?

Support für das Feature, wenn das ganze kein Bug ist...
ouzoWTF
Junior Member
Junior Member
Posts: 93
Joined: 2009-04-20, 21:03 UTC

Post by *ouzoWTF »

Das ist kein Bug. Wenn der TC so suchen würde wie ihr es beschreibt, dann würde die Suche unter Umständen sehr viel länger dauern, da der Suchbegriff nochmal aufgesplittet werden muss, in einer anderen Reihenfolge nach den Suchbegriffteilen gesucht werden muss etc. Es würden sich so sehr viel schneller mehr Kombinationsmöglichkeiten ergeben, welche der TC prüfen muss und zu langen Wartezeiten führt.
Single User Licence #201763
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hi, Leute.

Ihr unterstellt, daß T.C. 7.50 alle Bestandteile eures Suchbegriffs Brief an Meier wegen Bestellung.doc beliebig mit oder oder und vernüpfen und alle sich daraus ergebenden Datei/Verzeichnisnamen finden müßte.

Wie ouzoWTF schon angedeutet hat, würde das zu einer zeitlich endlosen Sucherei finden. Darüber hinaus ergäbe sich die Frage, wie man den T.C. denn dann überreden könnte, einen Suchbegriff, der Leerzeichen enthält, bitte wörtlich zu nehmen?

Die Änderung im Suchverhalten des T.C. 7.50 gegenüber 7.04a beinhaltet nur ein einziges Zugeständnis und damit genau eine Erweiterung gegenüber 7.04a und älter:

T.C. 7.04a interpretiert den Suchbegriff Brief an Meier wegen Bestellung.doc so: Suche nach Dateien/Ordnern, die folgenden Namen haben:
+ Brief (oder)
+ an (oder)
+ Meier (oder)
+ wegen (oder)
+ Bestellung.doc
Nicht gesucht wird nach Dateien/Ordnern, die genau diesen Namen haben: Brief an Meier wegen Bestellung.doc, weil die eigentlich notwendigen umgebenden doppelten Anführungszeichen fehlen.

Genau diesen einen zusätzlichen Fall, dass nämlich der gesamte Begriff gemeint ist und nur die doppelten Anführungszeichen fehlen, den Fall deckt die Suche des T.C. 7.50 jetzt zusätzlich mit ab.

Beweis:

Ordner: C:\Temp\Test
Darin enthaltene Dateien:

Code: Select all

An
Bestellung
Bestellung.doc
Brief
Brief an Meier
Brief an Meier wegen Bestellung.doc
Brief Bestellung.doc
Brief Meier Bestellung
Brief Meier Bestellung.doc
Brief.doc
Meier
Meier.doc
Wegen
Alt+F7, Suchbegriff: Brief an Meier wegen Bestellung.doc, Startpfad: C:\Temp

Ergebnis T.C. 7.04a:
An
Bestellung.doc
Brief
Meier
Wegen

Ergebnis T.C. 7.50 pb2:
An
Bestellung.doc
Brief
Brief an Meier wegen Bestellung.doc
Meier
Wegen

D.h. die Suche (Alt-F7) des T.C. 7.50 pb2 tut genau das, was sie tun soll.

Weitergehende Erwartungen an zusätzliche Oder-Verknüpfungen oder an zusätzliche Und-Verknüpfungen der einzelnen Namensbestandteile waren nie beabsichtigt und sind auch nicht implementiert.

Wenn irgendjemand eine unschärfere Suche benötigt, dann sollte er auf die guten, alten Wildcards ? (einzelnes Zeichen) und/oder * (beliebig viele Zeichen) zurückgreifen, also danach suchen lassen: Brief* an* Meier* wegen* Bestellung.doc :wink:

Damit bringt selbst T.C. 7.04a erstaunlich viele Treffer zuwege, nämlich genauso viele wie T.C. 7.50 pb2 (in meinem Beispielordner).

Grüße
Karl
ouzoWTF
Junior Member
Junior Member
Posts: 93
Joined: 2009-04-20, 21:03 UTC

Post by *ouzoWTF »

Ich dachte man muss nicht gleich ein Buch schreiben, wenn es das Flugblatt auch tut. :P
Single User Licence #201763
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

ouzoWTF wrote:Ich dachte man muss nicht gleich ein Buch schreiben, wenn es das Flugblatt auch tut. :P
In manchen Menschen schlummert eben ein Bestseller-Autor, nur keiner hat's bisher erkannt. :lol:

Karl
TWatcher
Junior Member
Junior Member
Posts: 43
Joined: 2008-08-26, 18:46 UTC

Post by *TWatcher »

@ouzoWTF, @karlchen
nochmal hmm....
(Ich versuche hier kein Buch zu schreiben, will das auch nicht provozieren, aber will mein Weltbild gerade rücken :wink: )
Zunächst einmal:
die Suche (Alt-F7) des T.C. 7.50 pb2 tut genau das, was sie tun soll.
Das glaube ich schon. :wink: Ich bin auch bisher sehr zufrieden damit.

Aber irgendwie fehlt mir noch eine Erklärung dafür, wonach TC sucht, wenn ich durch Leerzeichen getrennte Suchbegriffe eingebe.

karlchen wie erklärst du das:
Nach deiner Erklärung wird der zB Suchbegriff brief meier wie folgt behandelt;
Suche nach Dateien/Ordnern, die folgenden Namen haben:
+ Brief (oder)
+ Meier
Das wäre nach meinem Verständnis alle Dateien, die entweder Brief oder Meier enthalten.
Gefunden wird aber:
Brief Meier Bestellung
Brief Meier Bestellung.doc
Also genau die Dateien/Verzeichnisse, die den kompletten String "Brief Meier" enthalten.

Nicht gefunden werden:
Brief
Brief.doc
Brief an Meier
Brief an Meier wegen Bestellung.doc
Brief Bestellung.doc
Meier
Meier.doc

Das ist meines Erachtens im Widerspruch zur Hilfe:
Total Commander sucht nun sowohl nach den einzelnen Namensbestandteilen, als auch nach dem kompletten Namen.
Also mein Fazit:
Sind im Suchbegriff Leerzeichen (und keine Wildcards und kein ".") enthalten, dann sucht TC nach Dateien/Verzeichnissen die den kompletten Suchstring (einschließlich Leerzeichen) enthalten und nicht nach den einzelnen Bestandteilen.
Richtig?, oder habe ich mich hier in irgendetwas verrannt? :roll:
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, TWatcher.
Nach deiner Erklärung wird der zB Suchbegriff brief meier wie folgt behandelt;
Suche nach Dateien/Ordnern, die folgenden Namen haben:
+ Brief (oder)
+ Meier
Das wäre nach meinem Verständnis alle Dateien, die entweder Brief oder Meier enthalten.
Vorsicht: Holzweg.
Wie in meinem vorhergehenden Roman nachzulesen, bedeutet dies, dass der Dateiname entweder genau gleich Brief oder genau gleich Meier ist.


Exkurs zu "Meier2 oder "Brief" enthalten:
Wenn der Dateiname Brief oder Meier enthalten soll, dann ist die zugehörige Suchmaske *Brief* *Meier*.
Diese Suche ergibt in T.C. 7.04a wie in T.C. 7.50pb2 genau diese 9 Treffer:

Code: Select all

Brief
Brief an Meier
Brief an Meier wegen Bestellung.doc
Brief Bestellung.doc
Brief Meier Bestellung
Brief Meier Bestellung.doc
Brief.doc
Meier
Meier.doc
Zurück zu deinem urpsrünglichen Suchstring Brief Meier:
In der Tat hätte ich erwartet, dass dieser Suchstring genau 2 Ergebnisse liefert:

Code: Select all

Brief
Meier
weil das die einzigen Dateien sind die entweder Meier oder Brief heißen.
TWatcher wrote:Gefunden wird aber:
Brief Meier Bestellung
Brief Meier Bestellung.doc
Ergebnis bestätigt für T.C. 7.04a und T.C. 7.50pb2.
D.h. es wird alles gefunden, dessen Namen mit dem kompletten Suchstring beginnt. (Also wandelt T.C. intern den Suchbegriff um in sowas wie "Brief Meier*".


Schockierende :wink: Erkenntnis:
Karlchens Erklärung, wie T.C. Suchstrings ohne Wildcards, aber mit Leerzeichen interpretiert, war zu vereinfacht. :shock: :oops:


Deine Schlußfolgerung:
TWatcher wrote:Sind im Suchbegriff Leerzeichen (und keine Wildcards und kein ".") enthalten, dann sucht TC nach Dateien/Verzeichnissen die den kompletten Suchstring (einschließlich Leerzeichen) enthalten und nicht nach den einzelnen Bestandteilen.
Ja, ganz so sieht es aus. Und in der Tat ist das der Hilfe so nicht zu entnehmen.
Läßt sich auch mit diesem Absatz in der Hilfe nicht wirklich in Übereinstimmung bringen:
totalcmd.chm => 'Dateien suchen: Allgemeines' wrote:Geben Sie hier eine oder mehrere Suchmasken für die zu findenden Dateien an. Neu: Namen mit Leerzeichen müssen nicht mehr unbedingt in doppelten Anführungszeichen geschrieben werden, also z.B. Brief an Meier wegen Bestellung.doc. Total Commander sucht nun sowohl nach den einzelnen Namensbestandteilen, als auch nach dem kompletten Namen.
Hm, diese Sonderbehandlung von mehreren durch Leerzeichen getrennten Suchmasken ohne Dateiendung am Ende als eine einzige Suchmaske erscheint mir ein wenig unbegründet.

Es ist schon einigermaßen unerwartet, dass die Suche nach Brief an Meier wegen Bestellung.doc mehr Treffer liefert, als die Suche nach Brief an Meier wegen Bestellung.

Grüße,
Karl
TWatcher
Junior Member
Junior Member
Posts: 43
Joined: 2008-08-26, 18:46 UTC

Post by *TWatcher »

@karlchen: Wird vielleicht doch noch ein Buch draus. :wink:
karlchen wrote:Ergebnis bestätigt für T.C. 7.04a und T.C. 7.50pb2.
D.h. es wird alles gefunden, dessen Namen mit dem kompletten Suchstring beginnt. (Also wandelt T.C. intern den Suchbegriff um in sowas wie "Brief Meier*".

Genauer ist:
Es wird alles gefunden, dessen Namen den kompletten Suchstring enthält. (Also wandelt T.C. intern den Suchbegriff um in sowas wie "*Brief Meier*"

Beispiel: die Suchen nach an Meier ergibt folgende Resultate:
Brief an Meier
Brief an Meier wegen Bestellung.doc

Die Frage ist nun: Ist das so gewollt und die Beschreibung in der Hilfe unrichtig, oder umgekehrt?
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

'n Abend, TWatcher.

Also für einen Bestseller weist das Machwerk zu viele Ungereimtheiten auf. :roll:

Und ich fürchte fast, mich zu erinnern, dass das Thema nicht nur schon mal vor längerer Zeit diskutiert worden ist, sondern auch dass es so gewollt ist, dass, wenn kein Punkt im gesuchten Namen vorhanden ist und keine Namenserweiterung, T.C. tatsächlich den gesamten String als einen String behandlen soll.

Aber um zu überprüfen, ob mein Gedächtnis mir da einen Streich spielt oder die Wahrheit berichtet, müßte ich jetzt die Forumssuche bemühen. Und die folgt noch anderen Regeln. Die machen das Auffinden vorhandener Threads und Posts nicht immer gerade einfacher. :(

Grüße,
Karl
TWatcher
Junior Member
Junior Member
Posts: 43
Joined: 2008-08-26, 18:46 UTC

Post by *TWatcher »

Habe folgenden Thread gefunden:
Thread: Wie kann ich nach exaktem Dateinamen suchen?
Das Thema wurde also schon 2006 diskutiert...

Ich habe mal versucht das jetztige Suchverhalten des TC zu analysieren.
Übernehme aber keine Garantie auf 100%ige Richtigkeit.
Habe auch versucht mit RegExp auszudrücken, wie TC wirklich sucht.
Habe mich an die Suchtypen von Christian Ghisler aus dem Thread oben orientiert.
Die einfachen Anführungszeichen ' habe ich zur Begrenzung der Suchstings verwendet, diese werden also nicht mit in die Suchmaske eingetragen.

Code: Select all

type 1: Falls nichts oder *.* angegeben wurde, alle Dateien finden
type 2: Falls der Suchstring einen * oder ein ? enthält -> Wildcardmethode.
        hier wird nach Teilstrings (getrennt durch Leerzeichen) und dem Gesamtstring gesucht
        Beispiel:
        'brief an meier*'     regex: '(^brief$|^an$|^meier.*|^brief an meier.*)'
        '*brief an meier*'    regex: '(.*brief$|^an$|^meier.*|.*brief an meier.*)'
        '*.txt *brief.doc'    regex: '(.*\.txt$|.*brief\.doc|.*\.txt .*brief\.doc$)'
type 3: Falls der Suchstring einen Punkt . enthält -> exakte Uebereinstimmung
        auch hier wird nach Teilstrings (getrennt durch Leerzeichen) und dem Gesamtstring gesucht,
        aber ohne automatische Wildcard-Ergänzung "*" vor und nach dem Suchstring
        Beispiel:
        'brief an meier.'     regex: '(^brief$|^an$|^meier$|^brief an meier$)'
        'brief an meier.doc'  regex: '(^brief$|^an$|^meier\.doc$|^brief an meier\.doc$)'
type 4: Ansonsten Methode "enthalten in"
        Suchstring wird als ein String behandelt auch wenn Leerzeichen enthalten sind
        keine Suche nach Teilstrings
        automatische Wildcard-Ergänzung "*" vor und nach dem Suchstring
        Beispiel:
        'brief an meier'      regex: '(.*brief an meier.*)'
Suchstring in Anführungszeichen "xxxx"
      - Falls nur Anführungszeichen oder '"*.*"' angegeben wurde, -> identisch zu type 1
      - Wildcards enthalten -> wie type 2, aber keine Suche nach Teilstrings
        Beispiel:
        '"*brief an meier*"' regex: '(.*brief an meier.*)'
      - Punkt . enthalten -> wie type 3, aber keine Suche nach Teilstrings
        Beispiel:
        '"*brief an meier*."' regex: '(.*brief an meier[^\.]*$)'
      - Rest ist identisch mit type 4
        Beispiel:
        '"brief an meier"'    regex: '(.*brief an meier.*)'
Somit zum Thema durch Leerzeichen getrennte Suchstrings:
Sind Wildcards oder ein Punkt . im Suchstring enthalten (und werden keine Anführungszeichen verwendet), dann wird nach den Teilstrings und dem Gesamtstring gesucht.
Sind weder Wildcards noch Punkt . enthalten, wird nur nach dem Gesamtstring gesucht, in diesem Fall gibt es keinen Unterschied zu der Variante mit Anführungszeichen.
Frage: Was spräche dagegen für den Type 4 ohne Anführungszeichen ebenfalls nach Teilstrings und dem Gesamtstring zu suchen?

Code: Select all

        Beispiel:
        'brief an meier'      regex: '(.*brief.*|.*an.*|.*meier.*|.*brief an meier.*)'
(wobei hier die Suchen nach dem Gesamtstring redundant ist, da alles schon durch die Teilstrings gefunden wird)
Wenn man nur den Gesamtstring suchen möchte, kann man ja Anführungszeichen verwenden.

Ok, ich hoffe, ich verwirre nicht zu sehr. 8)
Jetzt ist wirklich fast ein Buch draus geworden :wink:
Bin auf Kommentare gespannt.
TWatcher
Junior Member
Junior Member
Posts: 43
Joined: 2008-08-26, 18:46 UTC

Post by *TWatcher »

Fast 2 Wochen her und kein weiterer Kommentar...
Nun gut. Vielleicht habe ich mit dem RegEx mehr verwirrt als zu helfen.
Fakt ist: Die Suche verhält sich mit TC7.5bx genau so wie in 7.04a.

Das aus meiner Sicht Unlogische ist, dass bei Suchstrings die Leerzeichen enhalten (keine Anführungszeichen, keine Wildcards, kein Punkt), nur nach dem Gesamtstring gesucht wird. Wenn dagegen Wildcards oder ein Punkt . enthalten sind wird auch nach den Teilstrings gesucht.

Ich weiß nun wie die TC Suche arbeitet und kann damit leben.
(Es ist wie mit so vielem, man muss es halt nur wissen :wink: )
Post Reply