Linux를 사용함에 있어 아주 유용한 find명령어로 사용자들은 주어진 조건으로 파일을 찾아낼 수 있다.

조건을 모두 입력 후 2>/dev/null를 추가해서 입력해주면 엑세스 권한이 없는 파일들을 걸러낼 수 있다. 


1. find명령어로 파일 검색

 

find <경로> -name [file name] => 파일 이름으로 검색

find <경로> -atime +n => n일 이전에 access한 파일을 검색

find <경로> -atime -n => n일 이내에 access한 파일을 검색

find <경로> -mtime +n => n일 이전에 변경된 파일 검색

find <경로> -mtime -n => n일 이내에 변경된 파일 검색

find <경로> -perm nnn => 파일 권한이 nnn인 파일을 검색

find <경로> -type [file type] => 파일 타입으로 검색

find <경로> -size n => size n이상인 파일들을 블럭단위로 검색

find <경로> -size nc => n byte단위의 단위의 파일을 검색할 때 숫자 뒤에 c를 붙임,                  kbyte단위는 k를 붙임

find <경로> -links n => 링크된 개수가 n인 파일 검색

find <경로> -user [user name] => 유저 이름으로 검색

find <경로> -group [group name] => 그룹 이름으로 검색

 

2. 검색한 파일을 처리하는 방법을 추가로 입력

 

-print => 찾은 파일의 절대경로를 화면에 출력

-exec cmd {}; => 찾은 파일들에 대해 cmd 명령어를 실행

 

3. 사용 예제

 

$ find /user4 -name test* -print => /user4 아래에서 파일이름이 test로 시작하는 모든 파일을 찾아서 화면에 보여준다.

$ find /root -name ping -print => root 디렉토리 밑에서 파일이름이 ping인 파일을 찾아 절대 경로명을 화면에 출력한다.

$ find /usr -name *.c -print => /usr 밑에 이름이 .c로 끝나는 모든 파일들을 찾아 경로명을 보여준다.

$ find /home -name who.txt -print => home 디렉토리 아래에 who.txt라는 파일을 찾아 경로명을 보여준다.

$ find . -type d -print => 파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

$ find /dev -type c -print => /dev디렉토리 아래에서 파일 타입이 c인 파일을 찾아 경로명을 보여 준다.

$ find . -perm 700 -print => 파일 권한이 700인 파일을 찾아준다.

$ find . ( -perm 400 -o -perm 200 ) -print => 파일 권한이 400인 파일과 200인 파일을 찾아준다.

(주의 : ""의 앞뒤에 space 가 반드시 있어야 한다.)

$ find . -size +1024 -print => 파일의 블럭 크기가 1024 이상인 파일을 찾아준다.

$ find . -name core -size +2048 -print => 파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다.

$ find . -user unix01 -print => 파일 소유자가 unix01인 파일을 찾아준다.

$ find . -group unix -print => 사용자그룹이 unix인 파일을 찾아준다.

$ find . -atime +30 -print => 30일 이전에 억세스되었던 파일을 찾는다.

$ find . -mtime -7 -print => 7일 이내에 수정된 적이 있는 파일을 찾는다.

$ find . -name core -exec ls -l {} ; => 이름이 core인 파일을 찾아서 ls -l 한다.

$ find . -name *.c -atime +30 -exec ls -l {} ; => 30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다.

$ find . -name core -exec rm -i {} ; => 현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다(지우기 전에 정말 지울 지를 물어본다.)

 

 

 

아래는 특정한 문자열을 검색하여 파일명을 출력한다.

 

find . -type f -exec grep "string" /dev/null {} ;

주의할 것은 조건에 맞는 파일의 개수가 많은 경위 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가 생길 수 있다는 것입니다.

명령행 버퍼의 오버플로우를 방지하기 위해서 다음과 같이 하십시요.

 

find . -type f | xargs grep "string"

 

여기서 string는 검색 문자열이다.

유닉스 시스템에서 어떤 큰 화일이 시스템을 소비하는지 알고 싶으세요?

그렇다면 아래와 같이 입력해보세요. 큰 화일이 sort되어서 나온답니다.

find /var -mount -ls -xdev | /usr/bin/sort -nr +6 | more

 

또 다른 예로 매주 일요일 새벽 2시에 access한 날짜가 2일 이상인 파일을 /tmp 에서 지우려면

 

0 2 * * 0 find /tmp -atime +2 -exec rm {} ;

 

find / -name “*.jsp” | xargs grep “수정

 

find . -name "* c" -exec grep -l ihd {} \;

 



'IT노트 > Linux' 카테고리의 다른 글

Network error:connection refused  (1) 2015.04.12
date [날짜보기] /bin/dateFundamentals  (0) 2015.03.21
리눅스 명령어 date  (0) 2015.03.18
[MYSQL][PHP] mysql 포트 바꾸기, 외부에서 접속하기  (0) 2015.03.16
IPTABLES  (0) 2015.03.14
Posted by wychoi
,