find명령은 다음 형식 인자를 받아 들인다.

find [경로] [옵션] [테스트] [작동]

경로
경로 부분은 쉽다. /bin과 같은 절대 경로나 ..와 같은 상대 경로를 사용할 수 있다.
필요하다면 find /var /home과 같이 여러 경로를 지정할 수 있다.

옵션
옵션은 여러가지가 있는데, 가장 많이 사용하는 것은 다음과 같다.
옵션
의미
 -depth  디렉토리 자체를 살펴보기 전에 디렉토리의 내용을 검색한다.
 -follow  기호화된 링크를 따라간다.
 -maxdepths N
 검색할 때 최대 N 수준까지의 디렉토리를 검색한다.
 -mound (혹은 -xdev)
 다른 파일 시스템의 디렉토리는 검색하지 않는다.

테스트
find에 지정할 수 있는 테스트에는 여러 가지가 있는데, 각각의 테스트는 true혹은 false를 리턴한다. find가 동작할 때 자신이 찾은 각 파일에 대해 정의된 테스트를 순저대로 적용한다.
테스트가 false를 반환하면 find는 현재 자신이 찾고 있는 그 파일을 무시하고 다음 파일로 넘어간다. 테스트가 true를 반환하면 find는 현재 파일에 대해 그 다음 테스트나 작동을 수행한다. 다음은 많이 쓰이는 테스트들이다.
 테스트 의미
-atime N
 파일이 N일 이전에 마지막으로 액세스 되었다.
 -mtime M
 파일이 N일 이전에 마지막으로 수정되었다.
 -name 패턴
 경로를 제외한 파일의 이름이 주어진 패턴에 일치한다. 쉘이 패턴을 즉시 연산하지 않고 find에 전달하도록 만들기 위해 항상 패턴에 따옴표를 붙여야 한다.
 -newer otherfile
파일이 otherfile보다 최신이다.
 -type C
 파일이 형식 C이며 이때 C는 특정 형식이 될 수 있다. 가장 흔히 사용되는 것은 디렉토리를 가리키는 "d", 보통 파일을 가리키는 "f"이다.
 -user 사용자이름
 주어진 이름을 가진 사용자가 파일을 소유하고 있다.

테스트는 연잔자를 통해 여러 테스트들을 섞어 사용할 수 있다.
 연산자
의미
 !(-not)  테스트를 역으로 수행한다.
 -a(-and)  두 테스트가 모두 true가 되어야 한다.
 -o(-or)  둘 중 하나의 테스트가 true가 되어야 한다.

예) \(-newer X -o -name "_*" \)
괄호를 사용하기 위해서는 백슬래시(\)를 괄호 앞에 붙여주어야 한다. 이유는 쉘에서 괄호가 다른 의미를 가지기 때문이다.

작동
작동은 원하는 파일을 찾은경우 수행할 일을 처리하게 하는 것이다.
 작동 의미
 -exec 명령
명령을 실행한다.
 -ok 명령
 -exec와 같지만, 명령을 수행하기 전에 사용자에게 실행 여부를 물어본다.
 -print  파일의 이름을 출력한다.
 -ls  현재 파일에 대해 ls -dils명령을 실행한다.

-exec와 -ok명령은 \; 로 끝날 때까지 입력되는 이후 매개 변수를 자체 매개변수로 받아 들인다. 문자열 {} 은 -exec, -ok 명령에 대한 특별한 형식의 매개변수이며, 현재 파일에 대한 전체 경로로 대체 된다.
예) find . -newer text.txt -type f -exec ls -l {} \;
현재 경로에서 파일명이 text.txt인 보통파일을 찾으면 "ls -l 파일이 있는 경로" 명령을 실행하라 라고 해석하면 된다.


저작자 표시
신고
by danguria 2011.01.18 21:14
| 1 |

티스토리 툴바