검색결과 리스트
글
예전에 포스팅 했던 [리눅스] 파일 개수 구하기(find, wc 이용) 글에서, find 명령어를 이용해 이름 기준으로 파일을 검색하는 방법을 알아보았다. 이번에는 파일 크기를 기준으로 검색하고, 그리고 검색된 결과를 바로 삭제하는 방법을 알아본다.
리눅스 콘솔에서 find --help 명령어를 쳐보면 아래와 같이 find에 대한 설명이 나온다. 아래 설명에서 굵게 처리한 부분을 보면, 힌트를 얻을 수 있다.
# find -- help
사용법 : find [경로...] [수식]
default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:
operators (decreasing precedence; -and is implicit where no others are given):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextype
normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xdev -ignore_readdir_race -noignore_readdir_race
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls]
-context CONTEXT
actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;
find에서 -size 옵션을 주면 파일 크기를 기준으로 검색을 할 수 있고, -exec 옵션을 주면 검색 결과에 특정 액션을 할 수 있다. 그럼 케이스 별로 나누어 실제 사용 예시를 알아본다.
1. 파일 크기 기준으로 검색
# find ./* -size +N => N 이상 크기의 파일을 검색한다.
# find ./* -size -N => N 이하 크기의 파일을 검색한다.
# find ./* -size N => N 크기의 파일을 검색한다.
** 사이즈 단위
b : 블록단위
c : byte
k : kbyte
w : 2byte 워드
예를 들어 콘솔 현재 경로에서 512byte 이상, 1024byte 이내의 파일을 찾고자 한다면 아래와 같이 입력하면 된다.
# find ./* -size +512c -size 1024c
2. 파일 검색 후 삭제
# find ./* [옵션] -exec rm -rf {} \; => find 검색 결과를 모두 삭제한다.
예를 들어 콘솔 현재 경로 아래의 파일을 모두 삭제하고자 한다면 아래와 같이 입력하면 된다.
# find ./* -type -f -exec rm -rf {} \;
3. 복합
그럼 지난 포스팅의 내용과, 이번 포스팅의 내용을 복합하여 정리해보면 아래와 같은 명령어도 실행할 수 있다.
# find ./* -type -f -name '*.jpg' -size +512k -size -1024k -exec rm -rf {} \;
=> 현재 경로의 파일 중에 파일 확장자가 jpg이면서, 사이즈가 512kbyte 이상, 1024kbyte 이하인 것들을 모두 삭제한다.
'컴퓨터 > OS' 카테고리의 다른 글
[Linux] 리눅스 rsync 설정 방법 (0) | 2013.12.03 |
---|---|
솔라리스(SunOS) inode 확인 방법 (0) | 2013.09.13 |
[AIX] sendmail 서비스 중지 방법 & 부팅시 서비스 실행 설정 (0) | 2013.08.24 |
[리눅스] 시스템 환경변수 등록 : .bash_profile (0) | 2013.08.23 |
솔라리스 프로세스(ps) full 내용 확인 방법 (0) | 2013.08.20 |
RECENT COMMENT