find 명령어란 : 윈도우에서 말하는 폴더, 파일 또는 하드디스크에서 특정 파일이나, 특정 폴더를 찾는 기능과 같습니다.
find 명령의 일반적인 형식은 다음과 같습니다.
find path expressions 각각의 인수들의 의미.
path 찾기 시작할 위치를 나타낸다.
예를들어, ‘.’은 현재 디렉토리를 나타내고, ‘/’은 루트 디렉토리부터 찾을 것을
나타냅니다.
expression 특정 파일을 찾기 위한 여러가지 조건들을 표현하는 부분으로 입니다.
option의 방법에는 다음과 같은 것이 있습니다.
-name : 확장자가 index 인 화일을 검색합니다.
명령어 : find /-name ‘*.index’
-perm : 퍼미션이 555(-r-xr-xr-x)인 화일을 검색합니다..
명령어 : find . –perm 555
-type : 파일의 타입을 지정하여, 찾고자하는 파일을 검색합니다.
타입의 종류는 아래와 같습니다.
b : 블록 특수 파일(block device)
c : 캐릭터 특수 파일 (character deice)
d : 디렉토리(directory)
f : 일반파일(file)
l : 심볼릭 링크(link)
p : 파이프 (pipe)
s : 소켓 (socket)
현재 디렉토리 아래에 있는 서브 디렉토리를 모두 검색합니다.
명령어 : find . –type d
-atime +n/-n/n (accessed time): 최근 n일 이전에 액세스된 파일을 검색합니다.
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘부터 n일 전까지의 파일
n은 정확히 n일 전에 액세스되었음을 의미합니다.
현재 디렉토리에서 한 달 또는 그 이상의 기간동안 한번도 액세스하지 않은 디렉토리 검색.
명령어 : find . -atime +30 –type d
-ctime +n/-n/n (changed time): ctime은 파일의 상태를 마지막으로 변경시킨 날짜를 의미합니다.
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘 부터 n일 전까지의 파일
n은 정확히 n일 전에 수정되었음을 의미합니다.
현재 디렉토리 아래에서 최근 10일 동안 고친 파일 검색.
명령어 : find . –ctime -10
-mtime +n/-n/n (modified time): mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미합니다.
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘부터 n일 전까지의 파일
n은 정확히 n일 전에 수정되었음을 의미합니다.
현재 디렉토리 아래에서 오늘부터 1일전까지 고친 파일 검색.
명령어 : find –mtime -1
-cnewer 파일명 : '파일명' 부분에 적어준 파일보다 더 최근에 수정된 파일들을 검색합니다.
next.txt 화일이 생성된 이후의 화일을 검색합니다.
명령어 : find . –cnewer next.txt –print
-user 유저네임 : '유저네임' 부분에 지정한 유저 소유의 파일을 찾아준다.
aaa라는 계정의 화일을 검색합니다.
find / -user aaa
-group 특정 그룹 소유의 파일들을 찾을 경우에 사용한다.
명령어 : find . –group test123
-empty 비어있는 파일이나 디렉토리를 찾을 경우에 사용한다.
-print 찾은 파일들을 표준출력(stdout)으로 출력한다. 기본으로 설정되어 있다.
-nouser 소유자가 없는 파일을 찾을 경우에 사용한다. 즉, /etc/passwd 파일에 없는 소유자의 파일을 찾을 경우에 사용한다.
명령어 : find / -nouser
-nogroup 올바른 그룹의 소유가 아닌 파일을 찾을 경우에 사용한다. 즉, /etc/groups 파일에 없는 그룹의 소유인 파일을 찾을 경우에 사용한다.
명령어 : find / -nogroup
-fprint file 찾은 파일들을 `
file'로 출력한다. `
file'이 존재 하지 않을 경우에는 새로 생성되고, 존재할 경우에는 기존의 파일은 없어진다.
명령어 : find . –name next.txt –fprint file
fprint file 명령어로 만들어진 파일
-exec 파일을 찾았을 경우, 찾은 파일들에 대해 특정 명령을 수행 할 때 사용한다. 일반적으로 `-exec command {} ;'의 형식을 취한다.
| (파이프, pipe, 수직바) 의 뜻은 "왼쪽 프로그램의 실행 결과를 오른쪽 프로그램의 입력으로 공급하라" 입니다.
파이프 왼쪽과 오른쪽 프로그램이 동시에 실행된다는 것은 틀린 표현입니다.
왼쪽 프로그램이 실행되고 그 결과가 output 되면 오른쪽 프로그램의 input으로 공급되는 것입니다. 동시가 아닌 순차적인 개념입니다.
예를 들면,
"검색 프로그램의 출력을 정렬 프로그램으로 파이프 시킬 수 있고 다시 그 결과를 프린팅 프로그램으로 파이프 시키거나 파일로 리다이렉트해서 저장할 수도 있다."
[예제] 자신의 현재 디렉토리에서 파일명이 'next로 시작하는'인 파일을 찾을 경우
명령어 : find . -name ‘next*’ –print
현재 디렉토리 밑에서 첫글자가 영어 대문자 A인 모든 파일을 찾을 경우
명령어 : find . -name "[A]*'' -print
확장자가 .txt 인 파일을 찾으면서 현재 디렉토리와 한 단계 밑의 디렉토리에서만 파일을 찾을 경우
명령어 : find -maxdepth 2 -name "*.txt'' –print
전체 디렉토리 밑에서 `aaa'이라는 이름을 가진 사용자 소유의 파일을 찾을 경우
명령어 : find / -user aaa -print
시스템에서 소유자나 그룹이 없는 파일을 찾을 경우 (크래커가 만들어 놓은 파일일 경우도 있음)
명령어 : find / -nouser -o -nogroup -print
현재 디렉토리에서 가장 큰 파일을 찾기
명령어 : find . -type f | xargs du -s | sort -n | tail -1
위 한 줄의 명령어는 현재 디렉토리에 서브 디렉토리 포함하여 가장 큰 파일을 하나 찾아서 이를 출력하라는 의미입니다.
간혹, 파일 시스템의 FULL이 되어서 가장 큰 파일을 찾으려고 할 경우 아주 유용하게 사용할 수 있습니다.
* 현재 디렉토리 위치에서 하위디렉토리를 포함하여 “out.println” 이란 문자열을 포함한 파일 검색
명령어 : find . -type f | xargs grep " out.println"
현재 디렉토리에서nex로 시작되는 파일을 찾아서 지워라
명령어 : find . –name ‘nex*’ –exec rm {} \;