[Linux] 디렉토리내 모든 문서파일 특정 문자열 치환, 폴더내 모든 문서의 특정 이름 변경

윈도우에서는 메모장이나 notepad 등에서 문자열 바꾸기 기능이 있습니다. 이와 동일하게 리눅스에서도 문자열을 치환할 수 있는 방법이 있는데요, 오늘은 리눅스 centos에서 특정 문자열을 모두 바꾸는 방법에 대해서 알아보도록 하겠습니다.

sed 명령어는 스트리밍 편집기 기능을 제공합니다.

xargs는 문자열을 입력 받고 인수를 전달해 줄 수 있습니다. 옵션 없이 사용한다면 기본 echo로 동작합니다.

 

폴더내 모든 문서의 특정 문자열 치환

$ find ./ -type f |xargs sed -i 's/바꿀문자열/새로운문자열/g'

 

만약 특정 폴더에 파일이 많고 파일의 내용중 you me 로 바꾼다면 아래와 같이 해주시면 됩니다.

$ find ./ -type f |xargs sed -i 's/you/me/g'

 

폴더내 파일중 특정 이름의 파일을 바꿀 경우

$ find ./ -name "*{바꿀파일명}*"  | sed -e 'p' -e "s/{바꿀문자열}/{새로운문자열}/g" |xargs -n 2 mv

 

특정 폴더에 '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

 

댓글

Designed by JB FACTORY