윈도우에서는 메모장이나 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