질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

아파치에관해서...

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

/usr/local/apache/htdocs/ find . -type f -name "*.*" -exec perl -pi -e "s/192.168.1.100/192.168.1.200/g" {} ;

전체적으로 위의 명령이 하는일은 아래 두가지입니다

1. 현재있는위치의 "*." 형식의 모든화일을 찾는다
2. perl -pi -e "s/192.168.1.100/192.168.1.200/g" 찾은화일명 이라는 명령을 실행한다

find는 파일을검색하는 명령입니다. man find 해서 천천히 읽어보실필요가 있는 중요한 명령어입니다.
위의 명령처럼 find . -type f -name "*.* 하는경우
.(=현재경로)에서 -type f(=파일형식인것들중에) -name "*.*"(=*.* 형식의 이름을) find(=찾아라) 라고 해석할수 있습니다. 좀 쉽게 이해가 되시나요?

그리고 find 의 옵션중에는  -exec 명령 ; 라는 형식을 사용할수 있습니다
이 옵션은 find가 찾아낸 각각의 파일에 대해 명령을 실행합니다. 명령은 ;으로 끝나야 합니다. 이것은 find로 넘어가는 명령어의 끝을 나타내는 ;를 쉘이 해석하지 않도록 하기위해서 이스케이프시키는 것입니다. 만약 명령중
{}이 포함되어 있으면 선택된 파일을 완전한 경로명으로 바꿔 줍니다.
그외에 find 의 결과물들에대하여 다른명령을 내리기 위해서 xargs 를 이용하기도 합니다
xargs는
보통은 표준 입력이나 파이프에서 데이터를 읽어 들이지만 파일의 출력에서도 읽을 수 있습니다.

여기까지 이해하셨다면
그 다음은 문자열에 대한 처리를 할수있는 다양한 방법들을 배우시는것이 필요합니다.
반드시 위의 예처럼 perl 을 사용하실필요는 없으며 sed,grep,egrep 등을 이용하셔도
문자열의 치환은 가능합니다.

만일 현재 디렉토리와 하위 디렉토리에서 .tmp 라는 확장자의 모든 파일을 삭제하려면
$
find . -name '*.tmp' -exec rm {} ;
식으로 사용할수 있겟지요
그외 시스템을 점검할때 setuid,setgid 걸린 파일을 찾을때
find / -user root -perm -4000 -print
find / -group kmem -perm -2000 -print
또는 백도어를 검사할때
find / -name ".. " -print -xdev
find / -name ".*" -print -xdev | cat -v
등등 다양하게 응용할수있으니 배워두시면 아주 유용하게 사용할수 있습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  86 명