RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
출처 블로그 > 영혼의 소리...카리스마 그리고 이성
원본 http://blog.naver.com/kill_9/100004874536

#!/bin/bash


# 이 스크립트는 해당 디렉토리 이하, 확장자가 txt인 파일의 문자열을 교체한다.

# 서브사이드 스크립트(Server Side Script)의 일괄적인 문자열 교체에 유용하다.


target_dir="/www/htdocs"

target_files=$(find "$target_dir" -name "*.txt" -type f)


# shell 내부변수 조정, 단, bash 버전 2.xx 이상에선 아래의 코드를 사용하지 않아도 된다.

IFS='

'

from_str='원본 문자열'

to_str='치환할 문자열'


# 루프로 해당 디렉토리내의 모든 파일(/www/htdocs 내의 *.txt 파일)을 조사한다

# 파일에 일치하는 패턴이 있으면 치환, redirection 시켜 새로운 파일(파일명.newfile)을 만든다

# 새로운 파일을 기존의 파일명으로 바꾼다.

# 하나의 파일 실행이 끝나면 특정 메세지를 띄운다.

for file in $target_files ; do

  result=$(grep "$from_str" "$file")

  if [ X"$result" != "X" ] ; then

     sed "s;${from_str};${to_str};g" "$file" > ${file}.newfile

     mv -f "${file}.newfile" "$file"

     echo "Changed String : $file"

  fi

done

exit 0

find 로 문자열 찾아서 치환

* 리눅스에서 파일 검색
- Tips/Linux | 2006/06/10 10:17
문자열찾기 방법 1 - 영어만 주로 가능
grep -rw "찾는문자열" ./

문자열찾기 방법 2 - 대/소문자 구분 안하고 검색
grep -i -l "찾는문자열" * -r 2> /dev/null

문자열찾기 방법 3 - 한글, 영어 모두 가능
find . -exec grep -l "찾는문자열" {} \; 2>/dev/null

문자열찾기 방법 4 - 한글,영어, 대소문자 안가리고 검색
find . -exec grep -i -l "찾을문자열" {} \; 2>/dev/null

문자열찾은 후 치환
find . -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \; 2>/dev/null

파일명 찾기
find / -name 파일명 -type f

파일명 찾기(대소문자 구별없음)
find / -iname 파일명 -type f

디렉토리 찾기
find / -name 파일명 -type d

디렉토리 찾기(대소문자 구별없음)
find / -iname 파일명 -type

xargs - 명령 결과를 다른 명령의 아규먼트로 넣기
find . -name "*py" -print | xargs  -i -t cp {} backup

응용은 요고와 같다
find ./* -exec grep -l '찾는문법' {} \; | xargs -i -t perl -pi -e 's/찾을문자열/바꿀문자열 {}
2006/09/08 14:33 2006/09/08 14:33
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/03   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)