반응형
저번 글에서는 find + perl 조합으로 문자열을 치환하는 내용을 봤는데요.
이번에는 find + sed 조합으로 문자열을 치환하는 방법을 알아보겠습니다.
Find + sed 조합으로 변경하기
find ./ -type f -iname "파일명" -exec sed -i 's/찾을단어/바꿀단어/g' {} \;
기본 명령어는 위와 같은 명령어를 사용합니다.(-iname 옵션으로 대소문자 무시)
아래와 같은 파일들이 있습니다.(find + perl 떄와 과 같은 파일들)
# ll
total 12
-rw-r--r-- 1 root root 20 2022-07-12 14:59 playon.php
-rw-r--r-- 1 root root 20 2022-07-12 15:00 playon.PHP
-rw-r--r-- 1 root root 20 2022-07-12 14:59 PlayOn.php
3개의 파일들 안에는 playon.tistory.com 이라는 내용이 역시나 공통으로 있지만
이번에는 파일 이름과 함께 내용도 대소문자로 되어 있습니다.
# cat playon.php
playon.Tistory.com
# cat PlayOn.php
playon.TISTORY.com
이제 내용을 변경 해 보죠.
단어 치환하기
# find ./ -type f -iname "*.php" -exec sed -i 's/tistory/kakao/g' {} \;
find + perl 때와 마찬가지로 .php의 확장자를 가진 모든 파일의 내용을 tistory에서 이번에는 kakao로 변경했습니다.
확인 해 보겠습니다. (-iname 옵션을 줘서 파일의 대소문자 무시)
# cat playon.php
playon.Tistory.com
# cat PlayOn.php
playon.TISTORY.com
오잉? 바뀌지 않았습니다. 치환할 단어도 대소문자를 구분하네요.
대소문자를 구분하지 않고 치환하도록 옵션을 추가 합니다. s/tistory/kakao/g 부분에서 i 옵션을 추가하면 됩니다.
s/tistory/kakao/ig 이렇게요.
# find ./ -type f -iname "*.php" -exec sed -i 's/tistory/kakao/ig' {} \;
명령어를 입력하고 다시 확인 해 봅니다.
# cat playon.php
playon.kakao.com
# cat PlayOn.php
playon.kakao.com
모두 명령어에 입력한대로 단어가 바뀌었네요.
(참고로 find + perl 도 i 옵션을 넣으면 똑같이 단어에서 대소문자 구문을 하지 않습니다.)
find + perl로 문자열 치환하기
반응형
'개발 > 리눅스' 카테고리의 다른 글
Certbot으로 Let's Encrypt 무료 인증서 설치(snap설치) (2) | 2024.01.05 |
---|---|
ssh_exchange_identification: read: Connection reset by peer (0) | 2024.01.02 |
find, perl로 문자열 치환하기 (0) | 2022.07.12 |
tar 명령어 압축 및 풀기 (0) | 2022.07.04 |
후이즈에서 발급받은 Sectigo 베이직 DV 싱글 설치(보안서버 SSL) (0) | 2022.04.22 |