여러 텍스트/HTML 파일에서 문자열 일괄 변경

간혹 많은 텍스트 문서에서 일부 문구를 일괄 변경해야 하는 상황이 있습니다. 이 경우 리눅스를 사용하는 경우 간단한 명령으로 모든 텍스트 파일에서 문자열을 일괄 변경할 수 있습니다. 윈도우 환경에서는 텍스트 일괄 변경을 지원하는 텍스트 편집기를 사용할 수 있습니다.

리눅스에 익숙한 경우에는 아래의 "Linux 커맨드 라인에서 복수 파일의 문자열 일괄 변경하기"를 참고하시고, 윈도우 사용자는 "텍스트 편집기에서 문자열 일괄 변경하기" 부분을 살펴보시기 바랍니다.

여러 텍스트/HTML 파일에서 문자열 일괄 변경

Linux 커맨드 라인에서 복수 파일의 문자열 일괄 변경하기

디렉터리와 서브 디렉터리 내의 모든 파일에 문자열을 변경하려는 경우, "Find a string and replace in all files inside a directory and sub-directory" 문서에서 제시하는 다음과 같은 명령을 사용할 수 있습니다.

find -type f -exec sed -i 's/abc/xyzg' {} +

각 명령어의 의미는 다음과 같습니다.

  • -type f : 파일만 찾음 (디렉터리는 제외)
  • -exec : 각 파일에 대하여 실행...
  • sed -i : 해당 위치에서 파일 편집
  • s/abc/xyz/g : 모든 라인에서 모든 "abc" 문구를 "xyz"로 교체
  • {} + : 여러 파일 이름에서 "exec" 명령을 한 번에 호출

"How to replace a string in multiple files in linux command line(리눅스 명령줄에서 복수 파일의 문자열 변경 방법)" 문서도 참고해보세요.

Bluehost VPS와 같은 VPS 호스팅을 이용하거나 클라우드웨이즈(Cloudways)를 사용하는 경우 SFTP를 통해 파일들을 업로드한 후에 SSH에 접속하여 위의 명령을 적절히 응용하여 시도해볼 수 있을 것입니다.

클라우드웨이즈는 3일 동안 무료로 이용할 수 있으므로, 서버를 생성하여 작업을 마친 후에 서버를 삭제하면 비용 부담 없이 테스트해볼 수 있습니다. 또한, 이런 작업이 자주 있는 경우에도 며칠 정도만 서버를 생성하여 이용하는 것도 가능합니다. 그러면 사용한 만큼만 요금이 청구되므로 소액의 요금이 부과됩니다.

텍스트 편집기에서 문자열 일괄 변경하기

일부 고급 텍스트 편집기에서 여러 파일의 문자열을 일괄 변경하는 기능을 제공합니다. Ultra Edit라는 프로그램이 이 기능을 제공하는 것 같습니다.

저는 EmEditor라는 유료 프로그램을 오랫동안 사용해오고 있습니다. 이 프로그램에서도 텍스트 기반 파일(txt, html, css...)에서 문자열 일괄 변경 기능을 제공합니다.

EmEditor는 30일 동안 무료로 사용할 수 있는 체험판을 제공할 것입니다.

여러 텍스트 기반 파일에서 일괄 변경하려는 경우 해당 파일들이 있는 폴더의 최상위 폴더에서 아무 파일을 Emeditor로 엽니다.

검색 » 파일 내 바꾸기를 클릭합니다. (또는, Ctrl+Shift+H 단축키를 누릅니다.)

여러 텍스트/HTML 파일에서 문자열 일괄 변경 3

파일 내 바꾸기 팝업이 표시됩니다.

여러 텍스트/HTML 파일에서 문자열 일괄 변경 4

위와 같은 창에서

  • 찾기: 바꾸고자 하는 기존 문자열을 입력합니다.
  • 바꾸기: 새 문자열을 입력합니다.
  • 파일 유형: 파일 유형을 지정합니다. 여러 파일 유형을 지정할 수 있습니다. 여러 파일 유형을 지정하려는 경우 세미콜론(;)으로 구분합니다. 모든 파일에서 바꾸려는 경우 *.*를 입력하면 됩니다.

아래의 "하위 폴더 내에서 찾기"를 체크하면 해당 디렉터리 내의 모든 하위 폴더 내에 있는 파일에서도 찾기/바꾸기가 수행됩니다.

또한, 정규식도 지원됩니다. 정규표현식을 조금 알면 보다 정교하게 찾기/바꾸기가 가능합니다. 예를 들어, 티스토리 백업을 받아서 워드프레스로 이전하려고 하는 경우, 이미지 파일들의 이름에서 공백을 없애고 html 파일 내의 이미지 경로에서도 공백을 없애야 합니다.

위의 글에 제시된 코드를 사용하여 HTML 파일 내의 모든 이미지 경로에서 공백을 하이픈(-)으로 바꿀 수 있습니다.

저는 오랫동안 번역을 해왔습니다. 간혹 수 백 개나 되는 HTML 파일들을 번역하는 작업을 맡곤 했는데요. 번역 중에 수정할 사항이 발견되면 수 백 개나 되는 파일에서 문제의 문구를 찾아서 수정하는 것이 쉬운 일이 아니었습니다. 이런 상황에서 EmEditor를 유용하게 사용했습니다. 이제는 트라도스에서 제공하는 "Integrated Search Views" 앱을 사용하여 편리하게 검색이 가능합니다.

참고


4개 댓글

  1. 안녕하세요^^
    다름이 아니라 EmEditor 에서 티스 백업 html 이미지 경로는 정규식으로 해서 바꿀문자열에 (src="\.\/img\/[^" ]*) ([^"]*?") 로 하고 새문자열에 $1-$2 로 하니까 html 이미지 경로에 모두 하이픈이 붙더군요. 문제는 파일명은 자동으로 바꾸려면 어떻게 해야하나요? 어떻게 해도 안되네요 ㅠㅠ 물론 수동으로 직접 파일명 수정을 통해 공백에 하이픈 붙이면 제대로 나옵니다만 전체 파일을 일시에 하이픈 붙이고 싶어서요. 답변 좀 부탁드려요~

    1. 프라이버시 보호가 필요한 댓글의 경우에만 "비밀댓글"로 달아주시기 바랍니다.

      저는 정규식을 RegexBuddy라는 유료 프로그램을 사용하여 설정하고 있습니다. 이런 툴을 이용하면 편리합니다. 일괄 변경하는 것은 유틸리티를 이용하거나 코딩이 필요할 수 있습니다. 다음 글에서 소개하는 Bulk Rename Utility를 이용해보시기 바랍니다.

      https://www.thewordcracker.com/intermediate/%ed%8b%b0%ec%8a%a4%ed%86%a0%eb%a6%ac%ec%97%90%ec%84%9c-%ec%9b%8c%eb%93%9c%ed%94%84%eb%a0%88%ec%8a%a4%eb%a1%9c-%ec%9d%b4%ec%82%ac%ed%95%98%ea%b8%b0/

  2. 안녕하세요. 얼마 전 사이트를 하나 만들려고 클라우드웨이즈에서 계정을 하나 만들어서 무료체험 기간중입니다. 제가 클라우드웨이즈에서 만들어서 그런건지 html 편집을 어떻게 하는지 모르겠습니다.
    그냥 취소하고 블루호스트로 가야하는건지요..
    답변 주시면 정말 감사하겠습니다

    1. 안녕하세요, 워린이님. 블로그를 운영하려는 경우에는 저렴하게 이용할 수 있는 블루호스트(Bluehost)를 고려해볼 수 있습니다. 무거운 테마를 사용하는 사이트인 경우 Cloudways도 괜찮은 선택 같습니다. 구체적으로 무엇을 편집하시려고 하시나요? 워드프레스는 PHP 기반이기 때문에 HTML 파일을 편집하듯이 수정할 수 없습니다.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.