Is there such an option so that dos2unix can be applied recursively to matching files ?

3 Answers 3


You can use find to select the files which you want to alter. And use xargs to pass filenames to dos2unix.

find . -iname '*.tpl' | xargs dos2unix

If you want to limit the search to the two directories ww1 and ww2 you can use the following command

find /var -iname '*.tpl' -regex '/var/ww[1,2]/.+' | xargs dos2unix
  • How to restrict the directories to /var/ww1 and /var/www2?
    – yoyo
    Nov 24, 2010 at 8:39
  • find /var/www1 -iname '*.tpl' | xargs dos2unix and so on Nov 24, 2010 at 8:43
  • 3
    Also, have a look at the man page for find man find and see if you can teach yourself to fish. Nov 24, 2010 at 8:44
  • @yoyo: find /var/ww[12] -iname "*.tpl" -print0 | xargs -0 dos2unix Nov 24, 2010 at 14:16

If you are are using zsh you can simply do:

dos2unix **/*.tpl

Which will recursively search all .tpl files for you without the need to rely on find.

  • 2
    This might cause problems depending on how much *.tpl files the poster has. If there are more files than ARG_MAX this will result in an error. This problem can be avoided by using xargs.
    – pacey
    Nov 24, 2010 at 9:57

In addition to the xargs solution, you can do find . -iname '*.tpl' -execdir dos2unix {} +. (Or just -exec on older versions of find — the end effect is the same.)

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.