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.


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

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

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.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.