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는 텍스트 에디터에서 사용되는 바꾸기 명령어입니다.

 

 

참고자료


구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x