반응형
가끔 혹은 종종 많은 파일에서 문자열을 변경해야 할 일이 있습니다.
홈페이지 내 모든 파일에서 style.css를 style2.css로 변경을 해야 한다던지, 도메인 주소가 변경되어 변경해야 한다던지 하는 일이..😥
그럴때 사용하기 좋은 명령어입니다. 파일 몇개만 바꿔야 하는 경우에는 그냥 에디터에서 변경하는게 빠르고 편할 수 있지만 모든 파일을 찾아 하나하나 바꿔야 한다면.. 나 안해! 😱
Find + perl 조합으로 변경하기
find ./ -type f -name "파일명" -exec perl -pi -e 's/찾을단어/바꿀단어/g' {} \;
기본 명령어는 위와 같은 명령어를 사용합니다.
아래와 같은 파일들이 있습니다.
# 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
이제 내용을 변경 해 보죠.
단어 치환하기
# find ./ -type f -name "*.php" -exec perl -pi -e 's/tistory/naver/g' {} \;
.php의 확장자를 가진 모든 파일의 내용을 tistory에서 naver로 변경했습니다.
확인 해 보겠습니다.
# cat playon.php
playon.naver.com
# cat playon.PHP
playon.tistory.com
playon.PHP 파일의 내용은 변경되지 않았네요. 이유는 *.php 소문자 파일만 적용되었기 때문입니다.
이를 해결하려면 -name 옵션대신 -iname 옵션을 사용하면 됩니다.
다시 해볼까요?
대소문자 구문없이 변경하기(-iname 옵션)
# find ./ -type f -iname "*.php" -exec perl -pi -e 's/tistory/naver/g' {} \;
-iname 옵션으로 변경해서 치환했습니다. 다시 확인 해 보겠습니다.
# cat playon.PHP
playon.naver.com
대문자 .PHP 확장자도 잘 변경이 되었네요.
반응형
'개발 > 리눅스' 카테고리의 다른 글
ssh_exchange_identification: read: Connection reset by peer (0) | 2024.01.02 |
---|---|
find, sed로 문자열 치환하기 (0) | 2022.07.13 |
tar 명령어 압축 및 풀기 (0) | 2022.07.04 |
후이즈에서 발급받은 Sectigo 베이직 DV 싱글 설치(보안서버 SSL) (0) | 2022.04.22 |
Let's Encrypt 인증서 해지(삭제)하기 (0) | 2019.09.24 |