개발관련/other

awk 또는 sed로 문자열을 재귀 적으로 찾기 / 바꾸는 방법

Rateye 2021. 7. 20. 10:32
728x90
반응형

 

질문 : awk 또는 sed로 문자열을 재귀 적으로 찾기 / 바꾸는 방법은 무엇입니까?

다음 항목을 모두 찾아서 바꾸려면 어떻게해야합니까?

subdomainA.example.com

subdomainB.example.com

/home/www/ 디렉토리 트리 아래의 모든 텍스트 파일에서 반복적으로?

답변

find /home/www \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/subdomainA\.example\.com/subdomainB.example.com/g'

-print0 은 새 행이 아닌 널 문자로 구분 된 각 결과를 인쇄하도록 find 디렉토리에 이름에 줄 바꿈이있는 파일이있는 경우에도 xargs 가 올바른 파일 이름에서 작동하도록합니다.

\( -type d -name .git -prune \) .git 이라는 모든 디렉토리를 완전히 건너 뛰는 표현식입니다. SVN을 사용하거나 보존하려는 다른 폴더가있는 경우 쉽게 확장 할 수 있습니다. 더 많은 이름과 일치하면됩니다. -not -path .git 와 거의 동일하지만 디렉토리의 모든 파일을 확인하는 대신 완전히 건너 뛰기 때문에 더 효율적입니다. -prune 실제로 작동하는 방식 때문에 -o

자세한 내용은 man find 참조하십시오.

출처 : https://stackoverflow.com/questions/1583219/how-to-do-a-recursive-find-replace-of-a-string-with-awk-or-sed

 

728x90
반응형