Ich schreibe ein Programm in Ruby, das nach Strings in Textdateien innerhalb eines Verzeichnisses sucht - ähnlich wie Grep.
Ich möchte nicht, dass es versucht, in Binärdateien zu suchen, aber ich kann keinen Weg in Ruby finden, um zu bestimmen, ob eine Datei binär oder Text ist.
Das Programm muss sowohl unter Windows als auch unter Linux funktionieren.
Wenn mir jemand in die richtige Richtung zeigen könnte, wäre das großartig.
Danke,
Xanthalas
libmagic ist eine Bibliothek, die Dateitypen erkennt. Für diese Lösung gehe ich davon aus, dass alle MIME-Typen, die mit text/
beginnen, Textdateien darstellen. Alles andere ist eine Binärdatei. Diese Annahme ist nicht für alle MIME-Typen korrekt (zB application / x-latex, application / json), aber libmagic erkennt diese als text / plain.
Eine Alternative zur Verwendung des Gems ruby-filemagic
ist die Verwendung des Befehls file
, der mit den meisten Unix-ähnlichen Betriebssystemen ausgeliefert wird. Ich glaube, es verwendet die gleiche libmagic
Bibliothek unter der Haube, aber Sie benötigen nicht die Entwicklungsdateien, die benötigt werden, um den ruby-filemagic
Edelstein zu kompilieren. Dies ist hilfreich, wenn Sie sich in einer Umgebung befinden, in der zusätzliche Bibliotheken (z. B. Heroku) installiert werden müssen.
Laut man file
enthalten Textdateien normalerweise das Wort text
in ihrer Beschreibung:
Sie können den Dateibefehl ausführen, indem Ruby die Ausgabe erfassen kann:
%Vor%