vi 문자열 치환
sed -i 's/기존문자/바꿀문자/g' 파일명
ex) sed -i 's/aaa/bbb/g' *.sh
vi 경로 치환
sed -i 's|기존경로|바꿀경로|g' 파일명
ex) sed -i 's|/test/direcroty|/change/directory|g' *.sh
vi 치환 명령어 요약
| :s/old/new | 현재 행의 처음 old를 new로 교체 |
| :s/old/new/g | 현재 행의 모든 old를 new로 교체 |
| :10, 20s/old/new/g | 10번째 행부터 20번째 행까지 모든 old를 new로 교체 |
| :-3, +4s/old/new/g | 현재 커서 위치에서 3행 위부터 4행 아래까지 old를 new로 교체 |
| :%s/old/new/g | 문서 전체에서 old를 new로 교체 |
| :%s/old/new/gc | 문서 전체에서 old를 new로 확인하며 교체 |
| :g/pattern/s/old/new/g | pattern이 있는 모든 행의 old를 new로 교체 |
| :g/pattern/s//new/g | pattern이 있는 모든 행을 선택하고 선택된 행에서 pattern을 new로 교체. 한 행에 여러개 있으면 모두 교체 |
파일 내 문자열 검색 (find)
https://webdir.tistory.com/155
리눅스 find - 파일 검색
터미널과 같은 TUI모드에서 검색을 실행하는 건 여간 까다로운게 아닙니다. 쉽게 검색창에 검색어 넣으면 "짠~" 하고 보여주는 게 얼마나 고마운지 깨닭게 되죠^^; 아래에서 검색하는 방법에 대하
webdir.tistory.com
형식)
find 검색할 디렉토리 -name "*" | xargs grep 검색할 내용
ex) find ./ -name "*.sh" | xargs grep "mvtest"
사용 예제)
# 용량이 0인 빈 파일 검색
find / -empty -exec ls -l {} \;
# 특정 소유자의 파일 찾기
find / -uid 500 -exec ls -l {} \;
# 특정 사용자의 소유파일들 검색
find / -user jboss -print
※ -print는 검색 결과를 파일의 절대경로로 표시. exec ls -l \; 는 ls -l과 같은 형식으로 표시
파일 내 문자열 치환
바꿀 파일들이 있는 특정 디렉토리에서 실행
형식)
(linux) find ./ -name "파일 이름" -exec sed -i 's/찾는 문자열/바꿀 문자열/g' {} \;
(unix) find ./ -name "파일 이름" -exec perl -pi -e 's/찾는 문자열/바꿀 문자열/g' {} \;
ex)
find ./ -name "*.sh" -exec sed -i "s/sw\/was\/weblogic/sw\/mvtest/g" {} \;
find ./ -name "*.sh" -exec perl -p -i -e 's/OLDSTRING/NEWSTRING/g' {} \;
※ s/sw\/was\/weblogic\/12.2.1.4\/wlserver\/sw\/mvtest\/12.2.1.4\/wlserver/g
위의 예시에서는 \로 경로에 있는 /를 문자로 인식하도록 해준 것임.
옵션)
exec : 앞선 명령어의 결과를 입력으로 받아 \; 라는 표기자를 만날때까지 읽고 실행. 즉, exec 커맨드의 끝을 ; 으로 표기해줘야 함
+ : 인자를 연속으로 입력해서 커맨드 한번으로 실행하게 해줌
{} : 찾은 파일들에 하나씩 대입됨을 의미
ex) /home/test 하위 파일 중 크기가 5MB 이상인 파일의 출력을 인자로 하여 chmod 명령어를 실행
$ find /home/test -type f -size +5M -exec chmod 755 {} +
xargs(eXtended ARGumentS) : exec 커맨드의 + 옵션과 유사. 앞선 명령어의 결과를 입력받아 인자를 연속으로 나열하여 커맨드 실행
https://lascrea.tistory.com/62
Linux xargs
기본적인 명령어 뒤에 파이프로 추가하여 사용파이프 이전에 명령을 인자로 받아 명령어를 실행하는 구조 xargs [옵션] 명령어 옵션- a : 표준 입력 대신 파일에서 항목을 읽음, 이 옵션을 사용하
lascrea.tistory.com
find + xargs 예와 find 명령에서 -exec를 조합한 차이점?
=> find의 경우 -exec 라는 인자를 줄 수 있기 때문에 굳이 xargs를 사용할 필요가 없음
하지만 find 외의 명령어, ex. ls의 경우는 xargs가 필요
ex) ls f* | xargs cat
contents of f1 ...
contents of f2 ...
contents of f3 ...
sed (Stremlined EDitor) : 치환, 삭제, 삽입과 같은 기능을 사용할 때 사용하는 명령어
-i : 작성하면 출력되지 않고 바로 파일에 적용되고, 생략하면 치환된 결과가 cat을 사용한 것처럼 출력됨
-g : 작성하면 모든 문자열에 적용되고, 생략하면 첫 번째 하나만 바뀜
perl : 복잡한 정규 표현식(PCRE)가 필요하거나, 여러 줄에 걸친 텍스트 패턴 매칭, 대용량 파일 처리시 사용
- \Q : 패턴 내에 \Q를 쓰면 그 뒤에 오는 모든 정규표현식 메타문자를 일반 문자(리터럴)로 취급하도록 강제
해제는 \E를 만나거나 패턴이 끝날 때까지 유효
. * + [ ] ( ) \ 등의 기호를 이스케이프(\) 처리 없이 그대로 검색할 수 있음
'OS > LINUX' 카테고리의 다른 글
| 17. awk (0) | 2026.06.29 |
|---|---|
| 16. 네트워크 명령어 (0) | 2026.06.22 |
| 14. 권한 (0) | 2026.06.11 |
| 13. history 명령어 시간 출력하기 (0) | 2026.05.15 |
| 12. 다중 사용자와 슈퍼유저 (0) | 2026.04.23 |