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

link|improve this question

75% accept rate
feedback

3 Answers

up vote 6 down vote accepted

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
link|improve this answer
How to restrict the directories to /var/ww1 and /var/www2? – yoyo Nov 24 '10 at 8:39
find /var/www1 -iname '*.tpl' | xargs dos2unix and so on – Tom O'Connor Nov 24 '10 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. – Tom O'Connor Nov 24 '10 at 8:44
@yoyo: find /var/ww[12] -iname "*.tpl" -print0 | xargs -0 dos2unix – Dennis Williamson Nov 24 '10 at 14:16
feedback

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.

link|improve this answer
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 '10 at 9:57
feedback

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

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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