4

Is there a way to specify to find that I only want text files (and not binary files)? Grep has an option to exclude binary files, so I thought find probably has a similar feature, but I've been unable to find it.

2 Answers 2

6

That's because grep looks at the file's contents.

find . -exec sh -c "file -b --mime-type {} | grep -q '^text/'" \; -print
1
  • In Ubuntu this is find . -exec sh -c "file -b --mime {} | grep -q '^text/'" \; -print
    – icc97
    Jul 4, 2012 at 21:28
4

find can find files by their metadata, but not check contents. However, you can couple it with file:

find .git -type f -exec file -iN0 {} + |
awk -F '\0' '$2 ~ /^: text\// {print $1}'

(You can remove the | awk ... part if you also want more detailed information.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .