콘텐츠로 건너뛰기
Home » 여러 파일에 대해 한 번에 문자열 치환하는 방법들

여러 파일에 대해 한 번에 문자열 치환하는 방법들

문자열에 대한 찾기/바꾸기를 여러 파일에 대해 한 번에 적용하는 방법

Sublime Text 3 에서

Find > Find in Files... 메뉴를 사용하여 찾을 패턴, 찾을 폴더들 (,로 구분가능하며, 와일드카드 패턴으로 특정 확장자를 한정할 수 있다.) 지정하고 변경할 값을 만들어서 한 번에 적용 가능하다.

vim 에서 여러 파일에 대해 치환하기

args, argdo 두 개 명령을 사용한다. args 명령으로 대상이 될 파일을 지정하고, argdo 명령으로 실행한다. 이 명령은 args에 지정된 내용에 대해 주어진 명령을 반복적으로 실행하는 것이다. | update는 변경이 발생한 파일에 대해 저장한다는 의미이다.

:args *.html
:argdo %s/foo/bar/g | update

다만 이 방식은 args 를 설정하는 것으로 대상건이 제한된다. (그러나 대부분은 이정도로 충분할 듯 하다)

명령줄에서 치환하기 : find + sed

find 명령은 기본적으로 폴더를 recursive하게 뒤지고 파일 찾기와 관련하여 매우 섬세한 컨트롤이 강한 장점이 있다. 파일이 특정 폴더 아래에 굉장히 많이 분산되어 있는 경우, 최근에 편집한 파일로 대상을 제한하는 등 고급 필터가 필요하다면, find를 통해서 대상 파일을 골라내고 스트림텍스트 에디터인 sed를 통해서 문자열 편집을 실행한다.

> find . -type f -name "*.html" -exec sed -i "s/foo/bar/g" {} \;

sed-i 옵션은 변경 사항을 저장한다는 의미이다.