관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 특정 문자열 일괄 변경 리눅스 (문자열 찾기, terminal, linux, find, xargs, sed) 본문

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]

viewDidLoad -> jake로 변경된 화면

// 다중편집: 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 [명령어]

$ man xargs 결과

프로젝트 모든 파일에 특정 문자열 변경

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"

  • 결과 - 모든 파일에 적용

Comments