먼저 명령어에 대해서 설명하겠다.
find . -type f -exec sed -i 's/원래문자열/치환할문자열/g' {} +
find . : 현재 디렉토리(.)에서 시작하여 모든 하위 디렉토리를 검색함
-type f : 파일만 검색 대상으로 지정
-exec : 각 검색 결과에 대해 다음 명령어 실행
sed -i 's/원래문자열/치환할문자열/g' {} : '원래문자열'을 찾아 '치환할문자열'로 교체. -i 옵션은 인플레이스 편집 옵션으로, 변경 사항을 원본 파일에 바로 저장
{} + : 검색된 각 파일을 sed 명령어에 전달
예를 하나 들어보자면
find . -type f -exec sed -i 's/<bpeng\/system\//<\/home\/bp\/src\/library\/bpeng\/system\//g' {} +
이런식으로 바꿀 수 있다.
주의해야할점이 있다면 문자열 내에 슬래시(/)가 포함되어 있다면 꼭 슬래시를 역슬래시(\)로 이스케이프 처리해주어야 정규 표현식 처리 도중 오류가 발생하지 않는다.
다른 주의해야할점은 구별을 해줘야한다. 만약 <bpeng 이런식이 아니고 bpeng 이런식으로 바꿀 문자열을 선택할 경우 파일 내에 있는 모든 bpeng이 바뀌어버리니 조심해야한다.
*절대 경로를 상대경로로 바꾸고 싶다면 반대로 하면 된다
이렇게 find명령어와 sed를 통해 바꾸는 법을 알아보았다.
'기타' 카테고리의 다른 글
[개인공부] ZeroMQ (0) | 2023.08.08 |
---|---|
[리눅스] g++ 로 파일 실행하기 (0) | 2023.08.04 |
[리눅스] 명령어1(ls 명령어) - 우툰투 정리 (0) | 2023.07.28 |
리눅스 터미널 명령어 정리 (2) | 2023.01.17 |
[개인정보처리방침] Web Feed 개인정보처리방침 (0) | 2020.09.14 |