초 간단 find 관련 명령어 manual
초 간단 find 관련 명령어 manual
- 차례 –
1. find란?
2. find 에서 가장 많이 사용하는 명령어
#### find 란? ####
윈도우에서 말하는 폴더, 파일 또는 하드디스크 에서 특정 파일이나, 특정 폴더를 찾는 기
능 입니다.
어쩌면 정말 유용한 명령어 일지도 모릅니다.
일단, find 명령어의 막강한 기능 중 하나는 모든 파일 내에 특정 단어가 들어간 파일 찾기,
특정 날짜단위로 파일 찾기, 최근 수정한 날짜나 용량 단위로 찾기 등, 정말 많은 기능을
가지고 있습니다. 이중에서 가장 많이 사용하는 옵션만 기술 하겠다.
#### find 명령어 ####
# find / -name test.txt
위의 옵션을 분석하면
1. / ß 최상의 루트 디렉토리 이하 전체
2. -name ß 찾는 이름(파일, 디렉토리 포함)
3. Test.txt ß 찾는 파일
위 순서가 find 명령어의 가장 기본이 되는 명령어 순서 입니다.
# find . –name aaaa
이것은 현재 디렉토리 이하 전체 에서 이름이 aaaa라는 파일 및 폴더를 찾는다.
“ . “ ß 이것은 현재 커서가 있는 디렉토리라는 뜻입니다.
다른 몇가지 옵션
1. –type : 파일이나 폴더 타입 (ㅣ(소문자 엘):링크, d: 디렉토리, f:일반 파일, s: 소켓 )
2. –mtime : 시간 관련
3. –exec : 찾은 결과물을 가지고 어떤 실행을 할 때 사용한다.
4. –perm : 퍼미션 관련 검색
5. –size : 파일크기 관련 검색
6. –group : 특정 그룹에 속한 파일 및 폴더 찾기
자 그럼 응용을 해봅시다.
# find . –name *aaa
현재 디렉토리 이하 전체에서 앞에 무엇이 오던지 간에 aaa가 들어간 파일 및 폴더 찾
기
# find . –name aaa*
현재 디렉토리 이하 전체에서 aaa가 앞에 들어간 파일 및 폴더 찾기
# find . –mtime -1
현재 디렉토리 이하 전체에서 24시간 이내 수정된 모든 파일 및 폴더 찾기
# find . –name {a,b,c,d}.txt
현재 디렉토리 이하 전체에서 a.txt b.txt c.txt d.txt 파일 및 폴더 찾기
# find /kms/web –name *.txt –print
현재 디렉토리 이하 전체에서 .txt 확장자로 된 파일 찾아서 출력하라(화면에 주르륵
나온다)
# find ~kms –name *.jsp –print
kms유저 홈디렉토리이하 전체에서 이름이 .jsp 로 끝나는 파일 찾기
# find /kms –size +1000k
/kms 이하 전체에서 크기가 1000kb 이상 파일 찾기
자 그럼 문제를 풀어 봅시다.
1. /kms/web 디렉토리 이하 전체에서 확장자가 .jsp 로 끝나는 파일중 크기가 50kb 이상
인 파일만 출력
# find /kms/web –size +50k –name *.jsp
2. /kms/ 디렉토리 이하 전체에서 최근 24시간 이내 수정된 파일 찾기
# find /kms/ -mtime -1
3. /kms/ 디렉토리 이하 전체에서 링크 파일 및 디렉토리만 찾아라
# find /kms/ -type l
4. /kms/ 디렉토리 이하 전체에서 링크 파일 및 디렉토리를 찾아서 상세정보를 출력
# find /kms/ -type l –exec ls –la {} \;
5. /kms/ 디렉토리 이하 전체 파일중 내용에 classes 라는 단어가 들어간 파일만 찾아라
# find /kms/ -name “*.*” | xargs grep classes
6. 그룹이 DBA로 된 파일만 찾아라
# find / -type f –group dba
7. 2일(48시간)전부터 현재까지 작업한 것을 찾아라
# find / -used 2
8. ppt문서만 찾아서 /back 라는 디렉토리로 복사 하라.
# find / -name *.ppt –exec mv {} /back/ \;
출처 : http://blog.naver.com/comecomehae?Redirect=Log&logNo=60042080799
==========================================================================
Find 명령어 활용
find /usr/include |xargs grep scoketaddr_in
= grep으로 두단어 검색?
(1) 자신의 홈 디렉토리에서 확장자가 `.txt'인 파일을 찾을 경우
find ~ -name '*.txt'
(2) 현재 디렉토리 밑에서 첫글자가 영어 대문자인 모든 파일을 찾을 경우
find . -name '[A-Z]*'
(3) `/usr/local'에서 첫 두글자는 영어 소문자이고 세번째 한자리는 숫자로 시작하는 이름을 가진 파일을 찾을 경우
find /usr/local -name '[a-z][a-z][0-9]*'
(4) (1)번에서의 파일을 찾으면서 현재 디렉토리와 한 단계 밑의 디렉토리에서만 파일을 찾을 경우
find ~ -maxdepth 2 -name '*.txt'
(5) 현재 디렉토리 밑에서 `zzang'이라는 이름을 가진 사용자 소유의 파일을 찾을 경우
find -user zzang
(6) 시스템에서 소유자나 그룹이 없는 파일을 찾을 경우 (크래커가 만들어 놓은 파일일 경우도 있슴)
find -nouser -o -nogroup
(7) 자신의 홈 디렉토리에서 최근 3일 동안 변경된 파일들을 찾을 경우
find ~ -mtime -3
(8)`/tmp'에서 최근 5일 동안 변경되지 않은 파일들을 찾아서 삭제할 경우 (파일을 삭제할 때마다 삭제할 것인가를 물어보도록)
find /tmp +5 -ok rm {} ;
(9) 현재 디렉토리 밑에 있는 모든 포스트 스크립트 파일(.ps)을 찾아서 gzip으로 압축을 하고 그 목록을 result.txt라는 파일에 저정할 경우
find . -name "*.ps" -fprint result.txt -exec gzip {} ;
(10) 크랙커의 침입이 의심스러워 자신의 시스템에서 suid와 guid가 설정된 일반 파일들을 찾아서 권한을 확인할 경우
find / -prem +6000
find / -type f -perm +6000 -print -ls
(11) 시스템 관리의 실수로 일반 사용자가 쓰기 권한을 갖도록 설정되어 있는 파일을 찾아서 실행 권한을 없애는 경우 (단, 링크 파일은 제외함)
find / -perm +2 ! -type l -print -exec chmod o-w {} ;
소유자가 tin인 memo로 시작하는 모든 파일을 출력한다.
find . -name 'memo*' -user tin
시스템 내의 모든 empty 파일을 제거한다. 단 삭제 전 확인을 요청한다. -exec 대신 -ok가 사용된 것에 주의하기 바란다.
find / -size 0 -ok rm {} ;
현재 디엑토리에서 대문자로 시작하지 않는 파일들을 찾아 프린트한다.
find . ! -name '[A-Z]*' -exec lpr {} ;
'Linux > Linux 일반' 카테고리의 다른 글
리눅스 파티션 나누고 포맷하기 (2) | 2010.03.06 |
---|---|
Get Source Code for any Linux Command (1) | 2010.02.19 |
mplayer config 옵션 (0) | 2010.02.06 |