개발/ETC

[Linux] sed 명령어로 여러개의 파일 문자열 변경하기

wonpick 2024. 4. 22. 17:26

 

find ./ -name "conf.*" | grep -r "문자열"
find ./ -name "conf.*" -exec sed -i "s/변경 전/변경 후/g" {} +

### sed 옵션
#-e 옵션: 스크립트를 지정합니다. 여러 개의 스크립트를 지정할 때 사용합니다.
#-f 파일: 스크립트 파일을 지정합니다.
#-i: 원본 파일을 직접 수정합니다. 백업 파일을 만들지 않고 원본 파일을 수정할 때 사용합니다.
#-n: 출력을 자동으로 하지 않습니다. 스크립트에 의해 출력되는 것만 출력합니다.
#-r: 정규 표현식을 확장합니다. 이 옵션을 사용하면 특수 문자를 이스케이프하지 않고도 사용할 수 있습니다.
#-u: BSD 확장 모드로 실행합니다. BSD sed와 호환성을 제공합니다.
#-V: 버전 정보를 출력합니다.
#-z: 널 문자(\0)를 입력 레코드의 구분자로 사용합니다. 데이터가 널 문자로 구분되어 있을 때 사용합니다.

 

<주의할 점>

  • 파일에 쓰기 권한이 있는지 확인해보자
    • find /path/to/files -type f -exec chmod +rw {} \;
  • 텍스트파일 형식이어야한다.
  • sed 명령어에서 구분자를 / 외로 |, #, :사용 할 수 있다.