지난 글에서는 파일명 검색 및 파일 내 문자열 찾는 방법을 알아보았다.

-[AIX] 파일 이름 검색 및 파일 내 문자열 검색(단일 | 여러 개 AND OR)

불러오는 중입니다...

 

UNIX 서버를 운영하다 보면 문자열을 치환해야 하는 경우가 많다.

치환해야 할 문자열 개수가 적다면 직접 vi 편집기 등으로 수정하면 되겠지만, 수십에서 수천 개가 된다면 곤란한 상황이 생긴다.

 

또한, 치환할 문자열의 위치를 모르는 경우에도 일일이 검색을 한 후 바꿔야 하는 번거로움이 있다.

 

이 두 가지 문제를 한꺼번에 해결하기 위한 명령어를 소개한다.

 

특정 경로 내 모든 파일(또는 필터 된 파일)의 특정 문자열 모두 치환하기

#find . -type f -name '*' -exec perl -pi -e 's|문자열(기존)|문자열(대체)|g' {} \;

ex)find . -type f -name '*' -exec perl -pi -e 's|green|pink|g' {} \;

   => 현재 디렉터리 및 하위 모든 디렉터리 파일 내에 green이라는 문자열을 pink로 치환한다.

예시를 위한 샘플 파일은 다음과 같다.

각 파일의 text는 다음과 같다.

   -test1.txt

apple banana

blue green

one two three four

 

   -test2.log

apple banana

blue green

one two three four

 

   -test3.txt

green

green red

green red grey

 

 

명령어 실행

명령어 실행 후 각 파일 텍스트는 다음과 같다.

   -test1.txt

apple banana

blue pink

one two three four

 

   -test2.log

apple banana

blue pink

one two three four

 

   -test3.txt

pink

pink red

pink red grey

 

 

+ Recent posts