문제

I have a large directory structure with many files named "configuration.txt". For each instance of configuration.txt that has directory "n10" somewhere in its path (and there are many such instances of this particular directory), I would like to do a search-and-replace where all instances of the string "DNSMax=20" gets replaced with string "DNSMax=50".

Please note that my path names contain spaces.

Could someone please give a Bash shell script that, if invoked from the root of my large directory structure, would accomplish this task?

I am using RedHat Linux.

Thank you!

도움이 되었습니까?

해결책

Using find and GNU sed:

find / -path '*/n10/*' -name configuration.txt \
      -exec sed -i 's/DNSMax=20/DNSMax=50/' {} \;

다른 팁

This will work provided there are no spaces in between the full file path.

find . -name "configuration.txt"|grep '\/n10\/'|xargs perl -pi -e 's/DNSMax=20/DNSMax=50/'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top