Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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

share|improve this question

3 Answers 3

up vote 8 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
share|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

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

share|improve this answer

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.

share|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

Your Answer

 
discard

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.