얕고넓은지식/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

 

 

 

 

반응형