Linux의 Find 명령(파일 및 디렉토리 찾기)

Linux의 Find 명령(파일 및 디렉토리 찾기)

2022-06-01 last update

9 minutes reading find terminal
find 명령은 Linux 시스템 관리자 라이브러리에서 가장 강력한 도구 중 하나입니다.이것은 사용자가 지정한 표현식에 따라 디렉터리 차원 구조에서 파일과 디렉터리를 검색하고 일치하는 모든 파일에 대해 사용자가 지정한 작업을 수행할 수 있습니다.find 명령을 사용하여 파일 및 디렉토리의 권한, 유형, 날짜, 소유권, 크기 등을 기준으로 검색할 수 있습니다. grep 과 같은 다른 도구와 결합하여 사용할 수 있다
또는 sed
.

명령 구문 찾기

명령의 일반 문법은 다음과 같다.
find [options] [path...] [expression]
  • find 속성 제어 기호 링크의 처리, 디버깅 옵션과 최적화 방법이다.
  • options 속성 정의find 검색 파일의 시작 디렉터리입니다.
  • path... 속성은 옵션, 검색 모드와 조작부호로 구분된 조작으로 구성되어 있습니다.
  • 디렉터리의 파일을 검색하려면 expression 명령을 호출하는 사용자가 이 디렉터리에 대한 읽기 권한을 가져야 합니다.다음 예시를 살펴보겠습니다.
    find -L /var/www -name "*.js"
  • 옵션 find (옵션) 은 -L 명령이 기호 링크를 따르도록 알려 줍니다.
  • find (경로...) 검색할 디렉토리를 지정합니다.
  • (표현식) /var/www-name "*.js으로 끝나는 파일(JavaScript 파일)을 검색하는 것을 알려줍니다.
  • 이름으로 파일 찾기

    이름으로 파일을 찾는 것은 find 명령에서 가장 자주 사용하는 방법일 수 있습니다.파일 이름으로 파일을 찾으려면 .js 옵션을 사용하고 검색할 파일 이름을 따라가십시오.예를 들어 find 디렉터리에서 -name이라는 파일을 검색하려면 다음과 같은 명령을 사용할 수 있습니다.
    find /home/ -type f -name document.pdf
    에서 대소문자를 구분하지 않는 검색을 실행하려면 document.pdf:
    find /home/ -type f -iname document.pdf
    위의 명령을 변경하면 "Document.pdf", "Document.pdf"와 일치합니다.등.

    확장자별 파일 찾기

    은 확장자별로 파일을 검색하는 것과 이름별로 파일을 검색하는 것과 같습니다.예를 들어 /home/ 디렉터리에서 -name으로 끝나는 모든 파일을 찾으려면:
    find /var/log/nginx -type f -name '*.log.gz'
    을 입력할 수 있습니다. 중요한 것은 이 모드를 인용하거나 반사봉 -iname의 별표 .log.gz을 사용해야 합니다. 어댑터를 사용할 때 셸에 설명되지 않도록 해야 합니다.regex /var/log/nginx과 일치하지 않는 모든 파일을 찾으려면 * 옵션을 사용하십시오.예를 들어, \으로 끝나지 않는 모든 파일을 찾으려면:
    find /var/log/nginx -type f -not -name '*.log.gz'

    유형별 파일 찾기

    을 사용하여 일반 파일, 디렉터리 또는 기호 링크와 같은 특정 파일 형식을 검색해야 할 수도 있습니다.Linux에서는 모든 내용이 하나의 파일입니다.파일 형식에 따라 파일을 검색하려면*.log.gz 옵션과 다음 설명자 중 하나를 사용하여 파일 형식을 지정합니다.
  • -not: 일반 파일
  • *.log.gz: 디렉터리 -type: symbolic link
  • : 문자 장치
  • f: 블록 장치 d: 명명예를 들어, 파이프(FIFO)
  • l: current working directory의 모든 디렉토리를 찾기 위해 소켓
  • 을 사용합니다.
    , 당신은 사용할 수 있습니다:
    find . -type d
    의 흔한 예는 c 을 사용하여 귀속적으로 사이트 파일 권한을 b으로 변경하고 디렉터리 권한을 p으로 변경하는 것입니다
    명령:
    find /var/www/my_website -type d -exec chmod 0755 {} \;find /var/www/my_website -type f -exec chmod 0644 {} \;

    크기별 파일 찾기

    파일 크기에 따라 파일을 찾으려면 s 매개 변수와 크기 표준을 전달하십시오.다음 접두사를 사용하여 파일 크기를 지정할 수 있습니다:
  • 644: 512 바이트 블록(기본값)
  • 755: 바이트 chmod: 두 바이트
  • -size: KB
  • b: MB c: GB 이하 명령w 디렉터리에서 k 바이트의 모든 파일을 찾을 수 있습니다:
    find /tmp -type f -size 1024c
    M 명령을 사용하면 files that are greater을 검색할 수 있습니다
    또는 지정된 크기보다 작습니다.(adsbygoogle=window.adsbygoogle | |[]).푸시({});다음 예제에서는 현재 작업 디렉토리에서 G 미만의 모든 파일을 검색합니다.크기 값
    find . -type f -size -1M
    이전에 1024 기호가 감량되었음을 주의하십시오. /tmp 보다 큰 파일을 검색하려면 find 기호를 추가해야 합니다.
    find . -type f -size +1M
    크기 범위 내의 파일을 검색할 수도 있습니다.다음 명령은 1MB- 사이의 모든 파일을 찾습니다:
    find . -type f -size +1M -size 21M

    수정 날짜에 따라 파일 찾기

    1MB 명령은 파일의 마지막 수정, 접근 또는 변경 시간에 따라 파일을 검색할 수 있습니다.크기별로 검색할 때와 마찬가지로 더하기 기호와 빼기 기호를 사용하여 보다 크거나 작음을 나타냅니다.며칠 전에 Dovecot 프로필을 수정했지만 어느 파일인지 잊어버렸다고 가정하십시오.+ 디렉터리에 있는 모든 파일을 쉽게 선별할 수 있습니다. 이 디렉터리는 1으로 끝났고 지난 5일 동안 수정되었습니다.
    find /etc/dovecot/conf.d -name "*.conf" -mtime 5
    2MB 옵션을 사용하여 수정 날짜에 따라 파일을 선별하는 또 다른 예입니다.다음 명령은 find 디렉터리에서 /etc/dovecot/conf.d 또는 며칠 전에 수정된 모든 파일을 보여 줍니다.
    find /home -mtime +30 -daystart

    권한별 파일 찾기

    .conf 옵션을 사용하면 파일 권한에 따라 파일을 검색할 수 있습니다.예를 들어 -daystart 디렉터리에서 /home에 해당하는 모든 파일을 찾으려면:
    find /var/www/html -perm 644
    을 사용하면 숫자 모드 앞에 -30 또는 슬래시 -perm을 추가할 수 있습니다.슬래시 775을 접두사로 사용할 때 파일이 일치하도록 최소한 하나의 카테고리(사용자, 그룹 또는 기타)가 해당 비트를 설정해야 합니다.다음 명령 예시를 고려하십시오.
    find . -perm /444
    상기 명령은 사용자, 그룹 또는 다른 사용자에게 읽기 권한을 설정한 모든 파일과 일치합니다.-/var/www/html을 접두사로 사용하는 경우 파일을 일치시키려면 최소한 지정된 비트를 설정해야 합니다.다음 명령은 소유자와 그룹에 대한 읽기 및 쓰기 권한이 있고 다른 사용자가 읽을 수 있는 파일을 검색합니다.
    find . -perm -664

    소유자별 파일 찾기

    파일 owned 찾기
    특정 사용자 또는 그룹의 경우 -/ 옵션을 사용합니다.예를 들어 사용자 /이 가지고 있는 모든 파일과 디렉터리를 검색하려면
    find / -user 
    을 실행할 수 있습니다. 이것은 실제 예입니다.사용자 -이 소유한 모든 파일을 찾고 일치하는 파일의 소유권을 -user에서 -group으로 변경한다고 가정하면
    find / -user www-data -type f  -exec chown nginx {} \;

    파일 찾기 및 삭제

    에서 모든 일치하는 파일을 삭제하려면 옵션을 일치하는 표현식의 끝에 추가하십시오.이 옵션은 삭제할 파일과 결과가 일치한다고 확신할 때만 사용됩니다.www-data 옵션을 사용하기 전에 일치하는 파일을 인쇄하는 것이 좋습니다.예를 들어 www-data에서 nginx으로 끝나는 모든 파일을 삭제하려면:
    find /var/log/ -name `*.temp` -delete
    을 사용하십시오. -delete 옵션을 매우 조심스럽게 사용하십시오.-delete 명령은 표현식으로 계산되며, .temp 옵션을 추가하면 지정한 시작점 이하의 모든 내용을 삭제합니다.디렉터리에 대해 /var/log/ -delete 과 같은 빈 디렉터리만 삭제할 수 있습니다
    .

    결론

    우리는 find 명령을 각종 옵션과 조건과 함께 사용하는 방법을 보여 드렸습니다.본고는 리눅스 시스템에서 파일을 어떻게 포지셔닝하는지에 대해 기본적인 이해를 제공해야 합니다. -delete man page에 액세스할 수 있습니다.find 명령에 대한 기타 모든 강력한 옵션을 읽습니다.질문이나 의견이 있으시면 아래에 메시지를 남겨 주십시오.