Kurz gesagt: es geht nicht.
Zumindest nicht wenn man den Anspruch erhebt auch etwas finden zu wollen.
Die Langversion: Bei der Arbeit bin ich einfacher Benutzer. Kein Administrator. Zumindest nicht auf meinem Arbeitsplatzrechner, einem PC mit Windows XP. Das Ding hat mich schon eine Menge Nerven gekostet, aber das Heute schlägt dem Fass die Krone ins Gesicht.
Vor ein paar Jahren habe ich mich damit abfinden müssen dass ich mit dem Explorer nicht im Inhalt von Dateien suchen kann. Zumindest nicht in irgendwelchen dahergelaufenen Dateien. Ich hatte einen Verzeichnisbaum voll mit PHP-Sourcen, und ich wollte die Datei finden in der eine bestimmte Meldung ausgegeben wird. Ein Fall für grep -r "Meldung" *
— auf jedem nicht-Windows zumindest.
Windows sucht — wenn ich mich recht erinnere — erstmal nur in indizierten Dateien. Nach längerer Suche hat mir ein automatisch übersetzter Artikel in der Knowledge Base etwas in der Art „schalt die Indizierung ab, dann funktioniert das auch mit Dateien deren Endung Windows nicht kennt“ gesagt. Einschliesslich einer Anleitung wo der erforderliche Haken versteckt ist. Bei mir war der Haken aber ausgegraut, ich schätze dass das ein fürsorglicher Administrator für mich erledigt hat. Ergo: suchen per Explorer habe ich mir abgewöhnt.
Stattdessen an der Kommandozeile findstr
aufgerufen. Das geht zur Not sogar rekursiv, hat mir damals also den Weg zur gesuchten Datei gezeigt.
Heute hat mich aber auch findstr
enttäuscht:
Wir sehen eine Textdatei mit einer Zeile Text. Mit findstr
kann ich offenbar nicht nach einem Wort suchen. Ein Kollege empfiehlt find
. OK, solange ich nicht nach Mustern suchen will klappt das offenbar. Aber was ist das? Wenn ich nach einzelnen Buchstaben suche findet auch findstr
etwas! Allerdings mit komischen Zeichen dazwischen…
Sowohl type
und find
an der Kommandozeile, als auch Notepad und Wordpad können mir den Inhalt der Datei sauber anzeigen. Nur halt findstr
nicht.
Aber die komischen Zeichen sind ein Hinweis: mit Vim (ohne den würde ich eingehen) finde ich heraus dass das Fileencoding dieser Datei utf-16le
ist. Keine Ahnung wie es dazu gekommen ist, ich bin mir sicher dass ich die Datei mit Bordmitteln erstellt habe. Ursprünglich war das eine RDP-Datei, mit der ich direkt die Verbindung zu einem bestimmten Rechner starten kann.
Fazit: findstr
ist auch keine Lösung. Solange ich nichts spezielles will (z. B. nach Mustern suchen. Oder rekursiv in Verzeichnissen. Oder in Datenströmen.) scheint find
den Dienst zu tun.
In diesem Fall hat mir Vim das Encoding verraten. Unter Linux hätte es wahrscheinlich auch ein file
getan (ungetestet). Wie finde ich eigentlich unter Windows das Encoding einer Textdatei heraus?