본문 바로가기

Programming

Linux 명령어: find

Linux 명령어: find

 

find

  • 이름, 사이즈, 소유자, 날짜 와 같은 특정 조건을 가진 파일 또는 디렉토리를 찾는 명령
  • -exec 옵션으로 찾아낸 파일에 대해 특정 명령을 실행 가능

 

검색 옵션

옵션의 종류 내용
-name 원하는 이름의 파일을 찾아주며, 와일드카드(*,?,[])를 사용 가능
-type 찾고자 하는 것이 파일(f)인지, 디렉터리(d)인지, 링크(i)인지 등을 정한다
-user 지정한 사용자가 소유한 파일을 찾는다.
-size 크기가 n인 파일을 찾는다. (-n, n, +n)
-newer 지정한 파일보다 나중에 생성된 파일을 찾아준다.
-empty 비어있는 파일을 찾는다.

 

동작 옵션

옵션의 종류 내용
-exec 찾아낸 파일을 인수로 지정한 명령을 수행한다
-print 찾아낸 파일의 전체 경로를 표시해 보여준다. 이 옵션은 find 명령 기본옵션
-ok -exec 옵션과 동일하나, 명령 수행 이전에 사용자에게 수행 여부를 확인한다

 

예시 #1

### ex)
### 파일을 찾는데, 이름은 '*.log'
### 찾아서 grep 으로 2021-12-25 찾는 것을 실행하는데
### 인자는 앞에 찾은 파일들 경로가 {} 에 들어가고
### 결과는 현재 경로의 tmp.txt 에 저장한다.

find / -type f -name '*.log' -exec grep 2021-12-25 > tmp.txt {} \;

 

예시 #2

# httpd.conf 라는 이름의
# 타입이 파일인 것을 찾는데,
# 허가 거부 등의 아닌 결과는 버린다.

find / -type f -name 'httpd.conf' 2>/dev/null

 

예시 #3

# / 부터 전체를 탐색하는데
# server.xml 의 이름 파일을 찾아서
# 해당 파일에 8080 문자열이 있는지 확인하고
# 해당 파일의 이름을 출력한다.
# 이 때, 불필요 로그는 버린다.

find / -type f -name 'server.xml' -exec grep -l 8080 2>/dev/null {} \;