I am writing a program in Ruby which will search for strings in text files within a directory - similar to Grep.
I don\'t want it to attempt to search in binary files bu
An alternative to using the ruby-filemagic
gem is to rely on the file
command that ships with most Unix-like operating systems. I believe it uses the same libmagic
library under the hood but you don't need the development files required to compile the ruby-filemagic
gem. This is helpful if you're in an environment where it's a bit of work to install additional libraries (e.g. Heroku).
According to man file
, text files will usually contain the word text
in their description:
$ file Gemfile
Gemfile: ASCII text
You can run the file command through Ruby can capture the output:
require "open3"
def text_file?(filename)
file_type, status = Open3.capture2e("file", filename)
status.success? && file_type.include?("text")
end