공부/Linux
Bash를 이용해 여러 파일의 내용을 치환하기
토고미
2022. 7. 15. 18:22
변수 명이 변경되거나 URL 주소가 바뀌는 등, 여러 파일에서 참조하는 값의 이름이 변경되는 경우가 있다.
보통 sed를 이용하면 바꿀 수 있지만 하위 디렉토리까지 재귀적으로는 할 수없다.
하지만 grep과 sed를 같이용하면 recursive하게 하위 디렉토리의 파일까지 내용을 바꿀 수 있다.
grep -rl 기존문자열 . | xargs sed -i 's/기존문자열/수정후문자열/g'
이렇게 하면 해당 디렉토리부터 하위 디렉토리까지 모든 파일을 탐색하며 {기존문자열} → {수정후문자열}로 바꾼다.
만약 특정 확장자인 파일의 내용만 치환하고 싶으면 아래와 같이 --include 옵션을 쓰면된다.
grep -rl 기존문자열 --include \*.go | xargs sed -i 's/기존문자열/수정후문자열/g'
위 예시는 .go 파일의 내용만 바꾸는 예시이다.
참고