수천, 수만개의 파일이 있는데 모든 파일을 열어 "korea"를 "대한민국"으로 변경해야한다면 어떻게 해야할까?
아래에 설명한 명령어 한줄이면 간단하게 해결할 수 있다.
단 특정단어를 다른단어로 변경을 하는것이라 "korean"을 "대한민국n" 으로 변경할 수도 있으니
찾는문자열 패턴을 명확하게 지정해야할 것이다.
grep -R --files-with-matches '찾는문자열' ./ --null | xargs -0 perl -pi -e 's/찾는 문자열/변경문자열/'
특정 디렉토리 이하 모든 파일을 검색하여 찾고자하는 문자열을 포함한 파일을 변경문자열로 변경하는 명령어 조합니다.
-R : 하위 디렉토리까지 검색
--files-with-matches : 문자열을 포함하는 파일의 이름만 출력
./ : 찾고자하는 디렉토리
--null : 파일명 대신 0 byte 문자를 출력한다.
예를들면, grep -IZ 는 유용한 newline 문자대신 각 파일명뒤에 0byte를 출력한다.
이 옵션은 newline과 같은 유용한 캐릭터를 포함하는 파일명까지도 출력을 명쾌하게 해준다. \
이 옵션은 임의의 파일명을 처리하는 find -print0, perl -0, sort -z, xargs -0과 같은 명령어와 함께 사용될 수있고
newline 캐릭터를 포함하는 그 자체로도 사용할 수있다
xargs perl조합을 바로 연결하지 말고 우선 파일목록을 확보한뒤에 백업을 해 두는것도 잊지말자.
mkdir /backup
grep -R --files-with-matches '찾는문자열' ./ > findlist.txt
perl -pi -e 's/^/cp /' findlist.txt
perl -pi -e 's/$/ \/home\/backup/' findlist.txt
sh findlist.txt
grep -R --files-with-matches '찾는문자열' ./ --null | xargs -0 perl -pi -e 's/찾는 문자열/변경문자열/'
'유용한정보' 카테고리의 다른 글
접근성을 해치지 않는 자바스크립트의 사용 (0) | 2014.04.22 |
---|---|
mysql 테이블 복제 하기 (구조 또는 데이터 모두) (0) | 2014.04.20 |
jquery form - ajaxForm (0) | 2014.04.20 |
jquery ajax, $.get(), $.post() 사용방법 (0) | 2014.04.20 |
JQuery 기본 예제 모음 (0) | 2014.04.18 |
Input 박스에 포커스 되었을때 스타일 변경 (0) | 2014.04.18 |
Input 박스에 사라지는 배경 넣기 (0) | 2014.04.18 |
대량 메일 발송 소스 (0) | 2014.04.16 |
댓글