본문 바로가기
tEch & infO

[Bash] 특정 파일을 찾아서 특정 파일의 내용을 모두 원하는 문자열로 바꾸는 한줄 명령 #Bash One-liner

by every7hing 2021. 1. 27.
반응형

 

[Bash] 특정 파일을 찾아서 특정 파일의 내용을 모두 원하는 문자열로 바꾸는 한줄 명령

#Bash One-liner

 

Linux 시스템을 많이 사용하다보면, 사실 굉장히 빈번하게 사용될 수 있는 명령어입니다.

원하는 파일을 찾아서, 원하는 문자열의 내용을 바꾸고자 하는 문자열로 바꿔주는 한 줄 명령어입니다.

먼저 테스트를 위해 아래와 같이 두 가지의 파일이 있다고 가정하겠습니다.

 

먼저 현재 폴더에서 *.txt 파일을 찾는 명령을 만들어봅니다.

find . -type f -name '*.txt'

 

위 명령을 실행하면 다음과 같이 원하는 .txt 파일을 잘 찾아주는 것을 볼 수 있습니다.

 

그럼 이제 찾은 파일에서 특정 문자열을 원하는 문자열로 바꾸는 테스트를 해야겠죠.

우선 파일안의 내용에서 바꿀 문자열을 정해봅시다.

찾은 파일의 내용이 보고 싶다면, 아래와 같이 한 줄 명령을 사용할 수 있습니다.

find . -type f -name '*.txt' | cat *

 

파일의 내용이 잘 나오네요.

 

파일의 내용 중, 공통적으로 존재하는 문자열인 "test" 문자열을 "real"이라는 문자열로 변경하는 한 줄 명령을 사용해볼게요.

find . -type f -name '*.txt' -exec sed -i -e 's/test/real/g' {} \;

 

위와 같이 명령을 실행하고, 파일의 내용을 다시 확인하겠습니다.

자 어떤가요? "test"라는 문자열들이 모두 "real"이라는 문자열로 바뀐 것을 볼 수 있습니다.

 

한 줄 명령을 잠깐 살펴보면, sed 명령을 통해 원하는 문자열을 찾고 찾은 문자열을 바꿀 문자열로 변경하는 것을 볼 수 있습니다.

따라서, 위 명령어를 응용하면 여러가지로 효율적인 일들을 할 수 있겠죠.

find . -type f -name '찾고자 하는 파일' -exec sed -i -e 's/바꾸고싶은문자열/바꿀문자열/g' {} \;

 

반응형

댓글