얕고넓은지식/linux
리눅스에서 모든파일에서 단어를 찾아서 변경 치환하기
쪽마
2023. 2. 11. 00:16
반응형
find . -name "*찾을단어" -exec perl -pi -e '바꿀단어' {} \;
참쉽죠잉?
복붙을 이용해서 활용해봅시다~
추가로
그럼...하나의 폴더에서만 찾아서 바꾸고싶다?
find <대상 경로> -type f -exec sed -i 's/<변경할 텍스트>/<변경될 텍스트>/g' {} +
요렇게 실해아면 참~ 쉽죠?
샘플
[root@localhost root]# find /etc/etc -type f -exec sed -i 's/12345/abced/g' {} +
/etc/etc 폴더안에 있는 모든 파일에서 12345 단어를 abced 로 치환한다.
근데 폴더는 안되네?
디렉토리는 따로 해줘야한다
아래 내용 참고
추가로 하위 모든 폴더에 적용하려면 아래 코드를 이용한다.'
특정 폴더에 'TEST' 문자열이 들어가는 폴더나 파일의 이름을 'TEST' 대신 'test' 로 바꾼다면
예) TEST_aa -> test_aa
$ find ./ -name "*TEST*" | sed -e 'p' -e "s/TEST/test/g" |xargs -n 2 mv
특정 폴더에 'TEST' 문자열이 들어가는 폴더만 이름을 'TEST' 대신 'test' 로 바꾼다면
$ find ./ -name "*{TEST}*" -type d | sed -e 'p' -e "s/TEST/test/g" |xargs -n 2 mv
그런데도 안된다?
rename가 설치안되서 그렇다
rename를 설치해주자
yum install rename
참고 rename 설치 우분투와 데비안 sudo apt update sudo apt install rename CentOS 및 Fedora sudo yum install rename Arch Linux yay perl-rename |
반응형