[Linux] 리눅스 find 명령어 사용법
Linux의 find는 파일 및 디렉토리를 검색할 때 사용하는 명령어입니다. 이름 그대로 리눅스에서 접근할 수 있는 파일 시스템에서 파일 및 디렉토리를 찾는(find) 명령어입니다.
이 find를 여러 옵션을 사용해 파일 및 디렉토리를 검색하는 방법에 대해 알아보겠습니다.
✔️ find 개념
find 는 파일이나 디렉토리를 찾는 명령어다. 현재 디렉토리(.) 기준
이름, 크기, 종류, 생성일 등 다양한 조건으로 검색할 수 있으며 검색 결과는 유닉스의 장점인 pipe를 이용하여 다른 프로그램에서 처리할 수 있다.
✔️ find 명령어 옵션
find 명령어에는 몇 가지 옵션과 많은 수의 표현식(Expression)이 존재합니다.
일반적인 리눅스의 명령어와는 조금 다르게 find는 명령의 검색 결과가 지정된 표현식의 조합의 따라 결정되기 때문에 옵션보다 표현식이 더 많이 사용됩니다.
👉 자주 사용하는 표현식
find [OPTION...] [PATH] [EXPRESSION...] OPTION -P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용 -L : 심볼릭 링크에 연결된 파일 정보 사용 -H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외 -D : 디버그 메시지 출력 EXPRESSION -name : 지정된 문자열 패턴에 해당하는 파일 검색 -empty : 빈 디렉토리 또는 크기가 0인 파일 검색 -delete : 검색된 파일 또는 디렉토리 삭제 -exec : 검색된 파일에 대해 지정된 명령 실행 -path : 지정된 문자열 패턴에 해당하는 경로에서 검색 -print : 검색 결과를 출력. 검색 항목은 newline으로 구분 (기본 값) -print0 : 검색 결과를 출력. 검색 항목은 null로 구분 -size : 파일 크기를 사용하여 파일 검색 -type : 지정된 파일 타입에 해당하는 파일 검색 -mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정 -maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정 -atime : 파일 접근(access) 시각을 기준으로 파일 검색 -ctime : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색 -mtime : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색
또한 표현식 사용 시 연산자(Operator)를 사용하여 "두 개 이상의 표현식" 조합이 가능합니다.
find 명령에서 사용할 수 있는 연산자는 아래와 같이 존재합니다.
표현식 | 설명 |
(expression) | expression 우선순위 지정 |
!expression -not expression |
expression 결과에 NOT 연산 |
expression -a expression expression -and expression expression expression |
expression 간 AND 연산 |
expression -o expression expression -or expression |
expression 간 OR 연산 |
위 표처럼 find명령에서 두 개 이상의 표현식을 사용할 때 연산자를 따로 지정하지 않으면 기본적으로 -a(AND)가 적용됩니다. ("-empty -print" = "-empty -a print")
✔️ find 명령 사용 예제
현재 디렉토리에서 지정된 이름의 파일 찾기 - find 파일명
$ ls // ls : 현재 디렉토리에 있는 파일 검색 FILE_1 FILE_2 FILE_3 $ find FILE_1 File_1
하지만 위 처럼 현재 디렉토리에 있는 파일을 찾기 위해 find 명령을 사용하는 경우는 드물고 지정된 디렉토리에 포함된 디렉토리 및 패턴으로 지정된 파일 이름으로 찾는 경우가 많습니다.
이에 따라 find 명령에 사용하는 옵션도 조금 더 복잡하게 지정되는데 보통 아래의 기본 형식을 변형하여 사용합니다.
$ find . -name "FILE"
위 명령은 "현재 디렉토리(.)에서 "FILE"이라는 이름을 가진(-name "FILE") 파일을 찾아라" 입니다. 이 때 검색되는 경로는 현재 디렉토리를 포함한 하위 디렉토리 모두를 포함하여 검색합니다.
아래 표는 find 명령 사용 예제입니다.
find 사용 예 | 명령어 옵션 |
현재 디렉토리에 있는 파일 및 디렉토리 리스트 표시 | find |
대상 디렉토리에 있는 파일 및 디렉토리 리스트 표시 | find [PATH] |
현재 디렉토리를 포함한 하위 디렉토리에서 파일 검색 | find . -name [FILE] |
전체 시스템(루트 디렉토리)에서 파일 검색 | find / -name [FILE] |
파일 이름이 특정 문자열로 시작하는 파일 검색 | find . -name "STR*" |
파일 이름에 특정 문자열이 포함된 파일 검색 | find . -name "*STR*" |
파일 이름이 특정 문자열로 끝나는 파일 검색 | find . -name "*STR" |
빈 디렉토리 또는 크기가 0인 파일 검색 | find . -empty |
특정 확장자를 가진 모든 파일 검색 후 삭제 | find . -name "*.EXT" -delete |
검색된 파일 리스트를 줄바꿈 없이 이어서 출력 | find . -name [FILE] -print0 |
파일 또는 디렉토리만 검색 | find . -name [FILE] -type f |
파일 크기를 사용하여 파일 검색 | find . -size +[N]c -and -size -[M]c |
검색된 파일에 대한 상세 정보 출력 (fine + is) | find . -name [FILE] -exec ls -l {} \; |
검색된 파일의 라인 수 출력 (find + wc) | find . -name [FILE] -exec wc-l {} \; |
검색된 파일에서 문자열 찾기 (find + grep) | find . -name [FILE] -exec grep "STR" {} \; |
검색 결과를 파일로 저장 (find, redirection) | find . -name [FILE] > [SAVE_FILE] |
하위 디렉토리 검색하지 않기 | ffind . -maxdepth 1 -name [FILE] |
검색된 파일 복사 (find + cp) | find . -name [FILE] -exec cp {} [PATH] \; |
수정 작업 진행하면서 위 케이스별로 추가 작업 하겠습니다.
감사합니다.
'Programming > Linux' 카테고리의 다른 글
[Linux] ssh와 rlogin의 차이 (0) | 2023.12.29 |
---|---|
[Linux] 파일, 디렉토리 삭제 rm 명령어 사용법 (0) | 2023.05.09 |
[Linux] 리눅스 설치 없이 실습하는 방법 (cloud9, codeOnWeb) (0) | 2023.05.09 |
[Linux] 리눅스 grep 명령어 사용법 - 리눅스 문자열 검색하기 (1) | 2021.07.19 |