터미널과 같은 TUI모드에서 검색을 실행하는 건 여간 까다로운게 아닙니다. 쉽게 검색창에 검색어 넣으면 "짠~" 하고 보여주는 게 얼마나 고마운지 깨닭게 되죠^^; 아래에서 검색하는 방법에 대하여 알아봅시다.
find
find는 검색기능과 여러가지 부가기능을 가진 명령어이다.
사용법 : find [검색대상위치] [옵션] [수행할작업]
용량이 0 인 비어있는 파일을 검색하는 것
find / -empty -exec ls -l {} \;
특정 소유자의 파일 찾고자 할때
find / -uid 500 -exec ls -l {} \;
특정 사용자의 소유파일들을 검색
find / -user nestgoer -print
'-print' 는 검색결과를 파일의 절대경로로 표시하는 반면 '-exec ls -l \;' 는 ls -l 과 같은 형식으로 검색결과를 표시한다.
특정 디렉토리에서 특정 파일 검색
find /home -name *.html -exec ls -l {} \;
검색된 파일을 바로 삭제
find ~nestgoer -name *.bak -exec rm -f {} \;
'-exec' 는 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하라는 의미이며 {} 는 찾아진 파일들을 하나씩 대입됨을 의미한다. 따라서 검색된 파일의 개수만큼 -exec 뒤의 명령어가 실행된다.
파일용량이 큰 파일들을 모두 검색하여 처리
find / -size +100M -exec ls -lh {} \;
지정한 퍼미션을 가지고 있는 파일 검색
find / -perm 4755 -exec ls -l {} \;
최근 몇분에 변경된 적이 있는 모든 파일 검색
find /home/nestgoer -mmin 5 -exec ls -l {} \;
5 는 5분을 뜻하는데, 이때 +5 이면 5분 보다 더 이후(더 오래된 값), -5 이면 5분 보다 더 이전(덜 된 값)
최근 100 시간 이내에 사용된 적이 있는 파일(액세스된 파일) 검색
find /home/nestgoer -atime -100 -exec ls -l {} \;
지정한 파일보다 더 최근에 사용된 적(액세스된 파일)이 있는 파일 검색
find /home -anewer /home/nestgoer/begin -exec ls -l {} \;
지정한 파일보다 더 최근에 변경된 적이 있는 파일 검색
find /home -newer /home/nestgoer/begin -exec ls -l {} \;
실행가능한 파일을 검색
find /home -executable -print
실행 가능하지만 쓰지 못하는 파일을 대상으로 검색
find /home -executable \! -writable -print
블록장치파일을 검색
find /dev -type b -exec ls -l {} \;
문자장치파일을 검색
find /dev -type c -exec ls -l {} \;
디렉토리를 검색
find /etc -type d -print;
일반파일만을 검색
find /home/nestgoer -type f -exec ls -l {} \;
심볼릭 링크파일을 검색
find /etc -type l -exec ls -l {} \;
root 소유의 SetUID, SetGID, StickyBit 파일을 검색
find / -user root -perm 4755 -exec ls -l {} \;
외부에서 제한없이 로그인할 수 있는 .rhosts 파일 검색
find / -name .rhosts -exec ls -l {} \;
.bash_histroy 파일 검색
find / -name .bash_history -exec ls -lh {} \;
무적파일의 검색
find / -nouser -o -nogroup -exec ls -l {} \;
특정 문자열을 포함하고 있는 파일을 검색
find /home -type f -exec egrep -i "linux" /dev/null {} \;
[옵션]
- -empty : 비어 있는 파일, 단 일반파일 또는 일반 디렉토리에 한함
- -uid n : 지정된 n값의 UID를 갖는 파일
- -gid n : 지정된 n값의 GID를 갖는 파일
- -group 그룹명 : 지정한 그룹명에 소속된 파일
- -name : 지정된 형식의 패턴을 가지는 파일
- -newer 파일 : 지정한 파일보다 더 최근에 변경된 적이 있는 파일
- -used n : 파일이 변경된 이후 최근 n일 이후에 액세스된 적이 있는 파일
- -user uname : 지정한 uname의 소유로 된 모든 파일(UID로 지정가능)
- -amin n : 최근 n분 이전에 액세스된 적이 있는 파일
- -anewer 파일 : 지정한 파일보다 더 최근에 액세스된 적이 있는 파일
- -atime n : 최근 n*24 시간 전에 액세스된 적이 있는 파일
- -mmin n : 최근 n분 이전에 변경된 적이 있는 파일
- -mtime n : 최근 n*24 시간 이전에 변경된 적이 있는 파일
- -executable : 실행 가능한 파일
- -readable : 읽기 가능한 파일
- -writable : 쓰기 가능한 파일
- -fstype type : 지정한 파일시스템타입(type)에 존재하는 파일
- -nogroup : 소속그룹이 존재하지 않는 파일
- -nouser : 소속 사용자(ID)가 존재하지 않는 파일
- -path 패턴 : 파일명이 패턴에 매칭되는 파일
- -perm 모드 : 모드에서 지정된 퍼미션과 일치하는 퍼미션을 가진 파일만 해당됨.
- -perm -mode : 모드에서 지정된 퍼미션을 가진 모든 파일.
- -regex 패턴 : 패턴에서 지정한 정규표현식에 매칭되는 파일
- -size n[cwbkMG] : 지정된 n 단위의 디스크공간을 사용하는 파일. 디폴트는 b
- -type 타입 : 지정한 파일타입에 해당하는 파일. b,c,d,p,f,l,s 등이 있음
위의 n 값은 +n 은 n 보다 큰 값을 의미하고, -n 은 n 값보다 작은 값을 의미하며, n 은 정확하게 n 값만을 의미한다.
[수행할작업(action)]
- -delete : 검색된 파일들을 삭제
- -exec command ; : 지정한 command 를 실행
- -exec command {} + : 검색된 파일들을 차례대로 매칭하면서 지정된 command 를 수행
- -ls : 'ls - dils' 를 수행
- -ok command ; : -exec 와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command 를 입력 받는다. 만약 입력이 없다면 지정된 command 를 수행한다.
- -print : 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
- -printf format : 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력
[연산자]
- ( ) : 괄호( )안의 연산이 먼저 행해짐
- ! expr : expr 이 거짓일때 참, 참일때 거짓이 됨.
- -not expr : 위의 ! expr 과 동일함 (POSIX 호환용)
- expr1 expr2 : AND 의 의미. expr1 이 거짓일 때에는 expr2 는 평가되지 않음
- expr1 -a expr2 : 'expr1 expr2' 와 같음
- expr1 -and expr2 : 'expr1 expr2' 와 같음 (POSIX 호환용)
- expr1 -o expr2 : OR 의 의미. expr1 이 참일 경우 expr2 는 평가되지 않음.
- expr1 -or expr2 : 'expr1 -o expr2' 와 같은 의미
'리눅스 > Linux 일반' 카테고리의 다른 글
리눅스 grep 과 awk 를 이용한 파일포맷 및 패턴처리 (0) | 2013.06.16 |
---|---|
리눅스 grep을 이용한 문자열 검색 및 편집처리 (0) | 2013.06.16 |
리눅스 cmp, diff, diff3, comm - 파일 비교 (0) | 2013.06.15 |
리눅스 sort - 파일내용 정렬 (0) | 2013.06.14 |
리눅스 wc - 특정파일내에 존재하는 행수와 단어수 확인 (0) | 2013.06.14 |