[Linux] 리눅스 파일 찾기(find 명령어)

    [Linux] 리눅스 파일 찾기(find 명령어) 알아보기

    리눅스에서 find 명령어는 특정 경로에서 파일이나 디렉토리를 검색하는데 사용됩니다. find 명령어는 다양한 옵션을 제공하여 사용자의 요구에 따라 검색 결과를 필터링하거나, 검색된 파일들에 대해 추가적인 작업을 수행할 수 있습니다. 이번에는 find 명령어의 사용법에 대해 자세히 알아보겠습니다.

    1. 리눅스 find 명령어의 기본 사용법

    find 명령어의 기본적인 사용법은 다음과 같습니다.

    $ find [경로] [표현식]

    위 명령어는 [경로]에서 [표현식]과 일치하는 파일이나 디렉토리를 검색합니다.

    2. 리눅스 find 명령어의 옵션

    find 명령어에는 다양한 옵션이 있습니다. 대표적인 옵션들은 다음과 같습니다.

    1. 타입으로 찾기 (-type)

    -type 옵션은 파일의 타입으로 검색할 수 있습니다. -type 옵션 뒤에는 f(일반 파일), d(디렉토리), l(심볼릭 링크), c(문자 장치), b(블록 장치) 등의 값을 지정할 수 있습니다.

    # 일반 파일만 검색
    $ find /path/to/dir -type f
    
    # 디렉토리만 검색
    $ find /path/to/dir -type d
    
    # 심볼릭 링크만 검색
    $ find /path/to/dir -type l

    2. 파일명으로 찾기 (-name)

    -name 옵션은 파일명으로 검색할 수 있습니다. -name 옵션 뒤에는 검색할 파일명 또는 패턴을 지정할 수 있습니다.

    # 파일명이 "sample.txt"인 파일 검색
    $ find /path/to/dir -name "sample.txt"
    
    # 파일명에 "sample"이 포함된 파일 검색
    $ find /path/to/dir -name "*sample*"

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

    -empty 옵션은 파일 크기가 0인 파일을 검색합니다.

    # 크기가 0인 파일 검색
    $ find /path/to/dir -type f -empty

    -size 옵션은 파일 크기로 검색할 수 있습니다. -size 옵션 뒤에는 파일 크기를 지정할 수 있습니다.

    # 10MB보다 큰 파일 검색
    $ find /path/to/dir -type f -size +10M
    
    # 10MB와 100MB 사이의 파일 검색
    $ find /path/to/dir -type f -size

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

    -exec 옵션은 검색된 파일에 대해 추가적인 명령을 실행할 수 있습니다. -exec 옵션 뒤에는 실행할 명령을 지정합니다. {}는 검색된 파일의 경로로 대체됩니다. -exec 옵션은 백슬래시(\)로 종료되거나, 세미콜론(;)으로 끝나야 합니다.

    # 파일의 권한을 644로 변경
    $ find /path/to/dir -type f -name "*.txt" -exec chmod 644 {} \;
    
    # 파일을 tar 아카이브로 압축
    $ find /path/to/dir -type f -name "*.txt" -exec tar cvf archive.tar {} \;

    3. 리눅스 find 명령어 예시

    이제 find 명령어의 예시를 살펴보겠습니다.

    # 현재 디렉토리에서 "sample"이라는 이름을 가진 파일 검색
    $ find . -name "sample"
    
    # /usr/bin 디렉토리에서 이름이 "python"인 파일 검색
    $ find /usr/bin -name "python"
    
    # 현재 디렉토리에서 크기가 10MB 이상인 파일 검색
    $ find . -type f -size +10M
    
    # 현재 디렉토리에서 "sample"이라는 이름을 가진 파일의 권한을 644로 변경
    $ find . -name "sample" -exec chmod 644 {} \;

    위와 같이 find 명령어를 사용하면, 원하는 파일이나 디렉토리를 쉽게 검색할 수 있습니다. 검색 조건에 맞는 파일을 찾아 추가적인 작업을 수행할 수 있으므로, 유용한 명령어 중 하나입니다.

    4. 리눅스 find 명령어의 표현식

    find 명령어에서는 표현식(Expression)을 사용하여 검색 조건을 지정할 수 있습니다. 표현식은 find 명령어를 사용할 때 -name, -type, -size 등의 옵션과 함께 사용됩니다.

    표현식은 다음과 같은 연산자를 포함할 수 있습니다.

    • 1. -name : 파일 이름에 대한 패턴을 지정합니다.
    • 2. -type : 파일 타입을 지정합니다.
    • 3. -size : 파일 크기를 지정합니다.
    • 4. -and : AND 연산자로서 두 조건이 모두 참일 경우 파일을 검색합니다.
    • 5. -or : OR 연산자로서 두 조건 중 하나라도 참일 경우 파일을 검색합니다.
    • 6. -not : NOT 연산자로서 지정된 조건이 거짓인 파일을 검색합니다.

    예를 들어, 현재 디렉토리에서 이름이 "sample"이고 타입이 디렉토리인 파일을 검색하려면 다음과 같은 명령어를 사용할 수 있습니다.

    $ find . -type d -name "sample"

    또한, 파일 이름에 대해 정규식 패턴을 사용하여 검색할 수도 있습니다. 예를 들어, 파일 이름이 "sample"으로 시작하는 파일을 검색하려면 다음과 같은 명령어를 사용할 수 있습니다.

    $ find . -type f -regex './sample.*'

    위와 같이 find 명령어에서 표현식을 사용하면 더욱 다양한 검색 조건을 지정할 수 있습니다.

    5. 리눅스 find 명령어의 경로

    find 명령어에서 경로는 검색을 시작할 디렉토리를 지정합니다. 경로는 절대 경로나 상대 경로로 지정할 수 있습니다.

    예를 들어, 현재 디렉토리에서 이름이 "sample"인 파일을 검색하려면 다음과 같은 명령어를 사용할 수 있습니다.

    $ find . -name "sample"

    위 명령어에서 .은 현재 디렉토리를 의미합니다. 만약 /home/user 디렉토리에서 검색을 시작하려면 다음과 같은 명령어를 사용할 수 있습니다.

    $ find /home/user -name "sample"

    또한, find 명령어에서는 -prune 옵션을 사용하여 특정 디렉토리를 검색에서 제외할 수도 있습니다. 예를 들어, /home/user 디렉토리에서 검색을 시작하되, /home/user/docs 디렉토리를 검색에서 제외하려면 다음과 같은 명령어를 사용할 수 있습니다.

    $ find /home/user -name "sample" -o -path "/home/user/docs" -prune

    위 명령어에서 -o는 OR 연산자를 의미합니다. 즉, 이름이 "sample"인 파일을 검색하거나, /home/user/docs 디렉토리를 제외합니다. -path는 디렉토리 경로를 지정합니다.

    총정리

    find 명령어는 리눅스에서 파일이나 디렉토리를 검색할 때 유용한 명령어 중 하나입니다. 옵션과 표현식을 사용하여 다양한 검색 조건을 지정할 수 있으며, 검색된 파일에 대해 추가적인 작업을 수행할 수 있습니다.

    경로를 지정하여 검색을 시작할 디렉토리를 지정할 수 있습니다. find 명령어를 적절히 활용하면 원하는 파일이나 디렉토리를 쉽게 찾을 수 있습니다.

    '코딩 > Linux' 카테고리의 다른 글

    [Linux] 리눅스 문자열 검색  (0) 2023.03.02

    댓글

    Designed by JB FACTORY