본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/리눅스

[Find] 리눅스 find 명령어 정리

by 미노드 2023. 3. 27.

리눅스 find 명령어는 상당히 자주 쓰이는 명령어 중 하나입니다.

그러나 옵션이 다양하며, 사용 방법이 간단하지 않고, 서버개발에도 자주 사용되는 명령어다보니
별도로 정리를 해두면 좋을 것 같아 정리해두려 합니다.

find 명령어
리눅스의 find 명령어는 리눅스 파일 시스템에서 파일을 검색하는 데 사용되는 명령어입니다.
다양한 표현식을 사용하여 원하는 파일의 목록을 추출할 수 있습니다.

1
2
3
4
find [경로] [옵션] [표현식]
 
# 현재 위치에서 log가 들어가는 파일 모두 찾기
find . -name "*log*"
cs

옵션

  • P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.
  • L : 심볼릭 링크에 연결된 파일 정보 사용.
  • H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
  • D : 디버그 메시지 출력.

경로

find의 인자값으로는 경로를 받습니다. 상대 경로, 절대 경로 모두 가능하며 대부분의 리눅스의 경우 이 경로 인자 값을 생략한다면 현재 위치(.)를 입력받은 것으로 간주하지만 유닉스의 경우 이 경로를 입력받지 않으면 명령어 실행이 안되니 유의하셔야 합니다.

표현식

  • name : 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음
  • type : 지정된 파일 타입에 해당하는 파일 검색
  • user : 해당 유저에게 속한 파일 검색
  • empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
  • delete : 검색된 파일 혹은 디렉토리 삭제
  • exec : 검색된 파일에 대해 지정된 명령 실행
  • path : 지정된 문자열 패턴에 해당하는 경로에서 검색.
  • print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
  • print0 : 검색 결과를 출력. 검색 항목은 null로 구분.
  • size : 파일 크기를 사용하여 파일 검색.
  • mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
  • maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
  • atime : n일 이내에 액세스된 파일을 찾음.
  • ctime : n일 이내에 만들어진 파일을 찾음.
  • mtime : n일 이내에 수정된 파일을 찾음.
  • cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음.

find 명령어는 다른 명령어와는 달리 옵션은 거의 사용되지 않고 이 표현식을 통해 찾을 타깃을 정합니다. 이 표현식은 중첩을 통해 대상 범위를 더 줄일 수도 있습니다.

리눅스 사용 예시

파일명으로 찾기 (-name 옵션)

name 옵션으로 특정 문자열이 들어가는 제목을 가진 파일을 찾는데 사용되며, 자주 사용되므로 방법을 익혀두는게 좋습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
 
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
 
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
 
# 현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
 
# 현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
cs

 

타입으로 찾기 (-type)

1
2
3
4
5
6
7
8
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
 
# 현재 디렉토리에서 test가 들어가는 디렉토리 찾기
find . -name "*test*" -type d
 
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
cs

폴더냐 디렉토리냐 같은 타입으로 찾는 방법도 있습니다.
특정 파일 타입만 따로 추출할 수도 있습니다.

  • d : 디렉토리
  • f : 일반적인 파일
  • l : 심볼릭 링크

파일 크기로 찾기 (-empty, -size)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
find . -empty
 
# 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제
find . -name "*test*" -empty -delete
 
# 현재 디렉토리에서 1024byte인 파일 검색
find . -size 1024c
 
# 현재 디렉토리에서 1024byte보다 큰 파일 검색
find . -size +1024c
 
# 현재 디렉토리에서 1024byte보다 작은 파일 검색
find . -size -1024c
 
# 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색
find . -size +1k -size -10k
cs

빈파일 또는 파일크기 기준으로 찾는데 사용 가능합니다.

  • b : 블록단위
  • c : byte
  • k : kbyte
  • w : 2byte 워드

검색된 파일에서 추가 명령 실행하기 (-exec)

1
2
3
4
5
6
7
8
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -name "*test*" -exec ls -l {} \;
 
# 현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기 
find . -type f -exec grep "test" {} \;
 
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm {} \;
cs

find로 검색된 결과를 가지고 특정 명령어를 수행할 수도 있습니다.
-exec 사용될명령어 {} \;
이런식으로 사용가능합니다.