Is there such an option so that dos2unix can be applied recursively to matching files ?
Asked
Active
Viewed 5,864 times
3 Answers
8
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

pacey
- 3,833
- 1
- 16
- 31
-
How to restrict the directories to `/var/ww1` and `/var/www2`? – yoyo Nov 24 '10 at 08:39
-
`find /var/www1 -iname '*.tpl' | xargs dos2unix` and so on – Tom O'Connor Nov 24 '10 at 08:43
-
3Also, 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 08:44
-
@yoyo: `find /var/ww[12] -iname "*.tpl" -print0 | xargs -0 dos2unix` – Dennis Williamson Nov 24 '10 at 14:16
3
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
.

Fladi
- 860
- 4
- 8
-
2This might cause problems depending on how much *.tpl files the poster has. If there are more files than [ARG_MAX](http://www.in-ulm.de/~mascheck/various/argmax/) this will result in an error. This problem can be avoided by using xargs. – pacey Nov 24 '10 at 09:57
0
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.)

mattdm
- 6,600
- 1
- 26
- 48