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 |