JooTC
리눅스 여러 파일 문자열 동시에 바꾸기 (한 줄의 명령어로 처리)

리눅스 여러 파일 문자열 동시에 바꾸기 (한 줄의 명령어로 처리)

여러 파일의 문자열을 동시에 바꾸기


리눅스 터미널에서 여러 파일에 있는 텍스트 내용을 동시에 바꾸고 싶은 경우가 있습니다. 한 파일을 열어가면서 일일히 바꾸기 명령을 사용할 수도 있겠지만, 파일이 많고 여러 군데 흩어져 있을 경우 작업 시간이 매우 길어지기 때문에 권장되지 않을 수 있습니다.

 

아래 명령어를 사용하면 여러 텍스트를 한 번에 변경할 수 있습니다.

 

방법 1 : perl 사용

find . [변경할 파일들이 있는 디렉토리 경로] -exec perl -pi -e 's/[찾을 텍스트]/[바꿀 텍스트]/g' {} \;
  • 사용법 : findperl 명령어로 정규식에 의해 텍스트를 변경

먼저 /Path/에는 변경할 파일들이 존재하는 디렉토리의 위치입니다. 해당 위치에 존재하는 모든 파일을 검색하게 됩니다.

이후 perl 스크립트를 사용하여 정규식에 의해 텍스트 변환을 진행합니다.

여기서 s/Find/Replace/g는 터미널 텍스트 에디터 vi 또는 vim에서 사용되는 문자열 바꾸기 명령어와도 같습니다.

 

방법 2 : sed -i 사용

cd [변경할 파일들이 있는 디렉토리 경로]
sed -i 's/[찾을 텍스트]/[변경할 텍스트]/g' *
  • 사용법 : 변경할 파일이 존재하는 경로에서 sed -i 사용

-i 옵션을 붙이면 반영할 내용이 파일에 즉시 덮어씌워지게 됩니다. 마찬가지로 s/aaa/bbb/g는 텍스트 에디터에서 사용되는 바꾸기 명령어입니다.

 

 

참고자료


이 글에 대해 어떻게 생각하시나요?
유용한 포스트였나요? 여러분의 의견을 하단의 Vote와 댓글로 남겨주세요 🙂
유용합니다!
아쉽습니다.

여러분의 의견을 댓글로 남겨주세요.

avatar
error: s