Ask Different is a question and answer site for power users of Apple hardware and software. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for a command that I could use to run on an entire directory and subdirectory that will convert all line endings from DOS to UNIX.

It should be able to detect if a file is text or binary.

I installed dos2unix using macports but it looks that it does miss the recursive option.

share|improve this question
Define how a file is text or binary? – Mark Jun 8 '14 at 13:02
Text: No ASCII below 32, except for TAB, CR, LF. – Max Ried Jun 8 '14 at 13:07
up vote 18 down vote accepted

Try find . -name "*" -type f -exec dos2unix {} \;.

In case dos2unix is not available on your system, you can use the following script (save as dos2unix and set as executable):


perl -pi -e 's/\r\n/\n/;' $*
share|improve this answer
Don't run this command in the root of a Git repository or else you'll ruin your repository! – Nick Dec 5 '13 at 6:15
Also, I had better luck using perl -pi -e 's/\r\n|\n|\r/\n/;' $* (source) – Nick Dec 6 '13 at 4:58

Here is one line shell code find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

share|improve this answer
One line answers are discouraged. Try adding more detail, or comment on it. – Max Ried Jun 8 '14 at 15:21
Works as advertised ! What else to add ? ;-) – Taiko Apr 18 '15 at 8:55
Hm... well it did screw up some png files though. Handle with care – Taiko Apr 18 '15 at 9:01

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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