Git, CocoaPods, Xcode, Shell
[iOS - swift] 특정 문자열 일괄 변경 리눅스 (문자열 찾기, terminal, linux, find, xargs, sed)
jake-kim
2021. 5. 5. 01:27
linux 기본 명령어
- 파일 검색: find
$ find . -name "[FILE NAME]" -type f

- 줄 바꿈 없이 출력 옵션 -print0
find . -name "[FILE NAME]" -print0

- 특정 파일의 문자열 변경: sed (Stream Editor)
- -i 옵션: input
- -e 옵션: 다중 편집을 가능하게 활성화
$ sed -i -e 's/oldString/newString/g' [FILE NAME]


// 다중편집: 1~3라인 삭제, oldString을 newString으로 치환
$ sed -e ‘1,3d’ ?e ’s/oldString/newString/g’
- find하여, 각각의 파일을 argument화 시켜서 변수처럼 사용방법: | xargs
// 찾은 파일들의 ls -l 정보 조회
$ find . -name "[FILE NAME]" -type f | xargs ls -l
- 명령어 help: man
$ man [명령어]

프로젝트 모든 파일에 특정 문자열 변경
find ./ -type f -exec sed -i '' -e 's/string1/string2/' {} \;
프로젝트 모든 파일에 특정 문자열 변경 (deprecated)
- find로 찾은 파일들을 xargs로 각 파일들에 접근하여 sed로 문자열 수정
- xargs -0: 내용에 줄바꿈 문자와 같은 공백이 있으면 다른 파일로 보지 않고 하나의 파일로 보며, null인 곳을 파일의 끝으로 판단
- xargs -0 -n: 매개변수 개수 지정
- xargs -0 -n 1: 하나씩 인자로 받는다는 의미
- 특정 문자열 일괄 변경
$ find . -name "[FILE NAME]" -type f -print0 | xargs -0 -n 1 sed -i -e "s/oldString/newString/g"

- 결과 - 모든 파일에 적용

