본문 바로가기
기타

[리눅스] find 명령어와 sed로 상대경로 절대경로로 바꿔보기

by BtoP 2023. 8. 2.

먼저 명령어에 대해서 설명하겠다.

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를 통해 바꾸는 법을 알아보았다.