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:

findstr findet nichts

findstr findet nichts

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?

Ich bin im Moment dazu verdammt, mit Windows zu arbeiten. XP am Arbeitsplatz, und unter anderem Windows 2003 Server irgendwo im RZ. Das heißt: ich versuche, damit zu arbeiten. Geht aber viel zu oft nicht, weil das ein großer Haufen Scheiße ist. Stinkend. Irgendwie.

Ich habe mir Heute Nachmittag vorgenommen, das zu schreiben. Während ein Kollege (der im Gegensatz zu mir auch sonst freiwillig mit Windows hantiert) versucht, einen Windows-Server zu rebooten. Weil der Speicher voll gelaufen ist. Oder so. Geht nicht. Muss wohl jemand den Server samt Reset-Knopf suchen gehen…

Naja, mein Problem findet aber auf einem anderen Server statt, und auch lokal auf dem XP kann ich das reproduzieren:

Ich bin mit dem Explorer in einem Verzeichnis mit etwa 20 Textdateien (plain ASCII, Quelltexte). Ich öffne eine der Dateien, suche da nach einem String, finde den auch. Ich will wissen in welchen anderen Dateien der String noch vorkommt. Also Rechtsklick auf den Ordner, ‚Suchen…‘. Auf XP öffnet sich ein neues Fenster mit einem aufwändig animierten Hund. Auf dem Server sieht das anders aus, macht aber das gleiche. Über dem Hund habe ich mehrere Eingabefelder. Über einem steht ‚Ein Wort oder ein Begriff innerhalb der Datei‘. Klingt sympathisch, nehme ich. Bringt aber nix. Der Hund wird aktiv, findet aber keine Dateien mit dem Begriff. Obwohl ich die vorher im Editor offen hatte. Noch mal rein gesehen, steht immer noch drin.

Ich versuche, zwei Kollegen zu fragen was ich falsch mache. Die haben sich aber beide nicht angesehen was ich wirklich getan habe, sondern schon bei der groben Schilderung des Problems wissend gegrinst, und Kommentare wie ‚Hab ich auch schon versucht, klappt nicht.‘ abgegeben.

Ich habe dann in einer DOS-Box mit ‚findstr‘ gesucht. Das ging. Ist dann allerdings auch ohne Hund. Und nicht rekursiv.

Liegt das an mir? An meiner Aura? Habe ich was falsch gemacht?

Ach ja, der Kollege hat den Server dann auch noch rebooten lassen können. Da musste nicht mal jemand einen Reset-Button suchen. Die Kiste ist keine Kiste sondern nur eine virtuelle Kiste. Und VMware hat quasi einen Fernsteuerungsresetbutton. Schöne neue Welt, der Serverbetrieb ist auf die Weise selbst mit Windows ganz angenehm. Zumindest die Abnutzung von Turnschuhen war hat deutlich nachgelassen…

Um die Mikrocontroller-Einöde der letzten Tage mal etwas aufzulockern: ich habe mich fast gewundert als ich gelesen habe wofür ‚grep‚ steht. Also nicht was man damit macht, sondern dass das Wort tatsächlich eine Bedeutung hat, beziehungsweise eine Abkürzung ist.

Das steht für Global Regular Expression Printer. Auch wenn man es fast täglich nutzt, ich behaupte mal dass das kaum jemand weiß. :-)