아파치에관해서...
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 870 조회
- 0 추천
- 목록
본문
/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
등등 다양하게 응용할수있으니 배워두시면 아주 유용하게 사용할수 있습니다.
관련자료
-
이전
-
다음