본문 바로가기

Unix & Linux/명령어

find 명령어

find : 파일 찾기에 사용, 검색 조건으로 시간, 소유자, 타입, 크기 등 여러 옵션을 줄수 있으며 검색된 파일에 대한 처리명령도 가능하여 파일검색 뿐 아니라 대량 파일의 일부내용 치환, 일정기간 지난 로그파일의 삭제 등 활용 범위가 많음

> man find

를 통해 확인 

예제를 통해 보면 이해가 쉬울것 같아 나열해 봄


> find . -name '*.html' -print

. 은 현재 디렉토리에서 찾음,  /usr 와 같이 특정위치에서 찾을려면 

   find /usr -name '*.html' 와 같이 지정

-name 은 파일 이름으로 찾으라는 조건으로 확장자가 .html 로 끝나는 파일을 찾음

-print 옵션은 생략해도 됨

 

> find . -type d

디렉토리만 출력

 

> find . -group admin -type l

그룹이 admin 이면서 심볼링 링크만 조회

 

> find . - user icocoa -maxdepth 1 -type d

소유자가 icocoa이며 디렉토리인것만을  현 디렉토리내에서만 검색

 

> find . -name '*.jpg' -exec rm -vf {} \;

jpg파일을 찾아 삭제

(rm 의 f 옵션은 삭제여부 묻지않고 진행, v 옵션은 삭제되는 파일출력)

 

> find . -name '*.jpg' -o -name '*.html'

-o 옵션은 OR 옵션으로 .jpg와 .html 파일을 찾음

 

> find . -atime -2

2일동안 access가 일어나지 않은 파일 검색

 

> find . -atime +3

access가 일어난지 3일된 파일 검색

 

> find . -mtime +7

변경이 7일 이상된 파일들 검색 (m : modification time)

 

> find . -mmin +30 -maxdepth 1 -type f

현디렉토리내에서 변경된지 30분 지난 파일들 검색(+,- 기호 써줄것)

 

> find . -name '*.xml' -exec grep -l 'Version' {} \;

현 디렉토리에서 Version 이라는 단어가 들어간 .xml 파일 리스트 조회

 

> find . -name '*txt*' -maxdepth 2 -type f

txt 가 포함된 파일만을 찾는데 바로 밑 단계 디렉토리까지만 검색 (그 이하 디렉토리는 검색 안함)

 

> find . -name '.xml' -exec perl -pi -e 's/Version2/Version3/g' {} \;

.xml파일들을 찾아 'Version2' 라는 문자를 'Version3' 이라는 문자로 바꿈

 

>find . \! -name "*.jpg"

.jpg 로 끝나지 않는 리스트

 

> find . -newer test.txt -user icocoa

test.txt보다 이후 파일이며 user가 icocoa

 

> find . \! \( -newer test.txt -user icocoa \) -print

test.txt보다 이후 파일이며 user가 icocoa 인 것을 제외

 

> find . \( -newer test.txt -or -user icocoa \)  -print

소유자가 icocoa 또는 test.txt 보다 신규파일

 

> find . -newerct '30 minute ago'

newer 옵션에 c,t옵션을 추가, 30분전에 수정된 리스트 조회

c : change time, m을 쓰게 되면 modification time

t : 날짜형식으로 읽어들임 (cvs 인식 날짜형식 )

"2004-03-01  00:21" (ISO 8601)
"10  Oct  2004  00:21" (Internet format)
"Mon Mar 1 00:21:42 UTC 2004"

"1 month ago"
"2 hours ago"
"400000 seconds ago"
"last year"
"last Monday"
"yesterday"
"a fortnight ago"
"3/31/92 10:00:07 PST" (70~99 년도까지 쓸수 있음, 2000년대는 4자리로, ex 2001)
"January 23, 1987 10:05pm"
"22:00 GMT"

 

> find . -newermm test.txt

test.txt 보다 나중에 수정된 파일검색 (-newermm 은 -newer 과 동등)

 

> find . -size +100c

사이즈가 100바이트 이상인 파일 검색(c: bytes)

예를 들어 -500c 으로 바꾸면 500바이트보다 작은 파일검색

c: bytes(characters) 로 기본값이므로 쓰지 않아도 무방

k : kilobytes (1024 bytes)

M : megabytes (1024 kilobytes)

G : gigabytes (1024 megabytes)

T : terabytes (1024 gigabytes)

P : petabytes (1024 terabytes)

 

> tar cvf - `find . -name '*.html'` | gzip -9c > html.tar.gz

- 현 디렉토리에서 .html 파일들을 찾아 html.tar.gz 파일로 압축하여 묶음

- tar의 - 는 표준출력으로 보내라는 것으로 이를 gzip이 받아 c 옵션을 통해 표준출력으로 내보냄(html.tar.gz 파일로 처리됨), gzip 의 -9는 압축률로서 압축률은 높으나 시간은 오래걸리고 -1 로 할 경우 압축률은 낮으나 시간은 빠름

- 버전에 따라 tar명령의 z 옵션(zip으로 압축)이 안되는 경우 gzip 명령어와 병행하여 사용

- 풀려면 > gunzip -c html.tar.gz | tar xvf -

 

 

'Unix & Linux > 명령어' 카테고리의 다른 글

유용한 명령어 - A  (0) 2012.12.18
netstat  (0) 2012.11.02
whereis 명령어  (0) 2011.06.17
rm 명령어  (0) 2011.06.17
[UNIX/Linux] history 명령어  (0) 2011.05.06