잔나 테마 라이선스가 확인되지 않았습니다. 테마 옵션 페이지로 이동하여 라이선스를 확인하세요. 각 도메인 이름에 대해 단일 라이선스가 필요합니다.

Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

마침내 Linux에서 find 명령을 열 수 있었던 방법

많은 사용자는 Linux 배포판 내에서 파일에 효율적으로 액세스할 수 있는 방법을 필요로 합니다. 특히 콘텐츠가 누적되거나 경로가 여러 개인 경우 더욱 그렇습니다. `find` 명령은 이름, 확장자, 크기 또는 수정 날짜를 기준으로 파일이나 폴더를 정확하게 검색할 수 있는 뛰어난 유연성을 제공합니다.

이 명령어를 사용하는 방법을 익히면 개인용 컴퓨터든 서버든 시간을 절약하고, 오류를 줄이고, 일상적인 작업을 더 쉽게 수행할 수 있습니다. 이 가이드에서는 find 명령어의 가장 일반적인 실제 사용 예를 명확한 단계와 간단한 예를 통해 설명하여 이해를 돕습니다.

선글라스를 착용하고 i3 윈도우 관리자 로고가 배경에 있는 떠 있는 창으로 둘러싸인 노트북을 사용하는 Linux 마스코트: Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

수십 년 동안 find 명령어를 사용해 왔지만, 지금까지 제대로 이해하지 못했습니다. 억지로 따라가며 이 이해하기 힘든 명령어를 풀어낸 것이 성공의 열쇠였습니다.

차례

find 명령어 소개

`find` 명령어는 여러분이 사용해 본 가장 특이한 리눅스 프로그램 중 하나입니다. 어디서나 사용할 수 있을 만큼 기본적이면서도, 누구나 좋아할 만큼 신비롭습니다. `fd`와 같은 대안도 있지만, `find`는 거의 항상 작동하는 최소공배수입니다.

가장 간단한 경우, find를 사용하는 것은 매우 쉽습니다.

.-name을 찾으세요 '*.txt'

이 일반적인 유형의 쿼리는 현재 폴더 또는 그 하위 폴더에서 ".txt"로 끝나는 모든 파일을 찾습니다. 여기까지 읽으셨다면 find 함수가 얼마나 복잡한지 잘 모르실 겁니다. find 함수의 설명서는 1639줄(버전 4.9.0)로 구성되어 있으며, find 함수의 사용법을 자세히 살펴보면 유틸리티라기보다는 본격적인 프로그래밍 언어처럼 느껴집니다.

이런 복잡성 때문에 항상 불편했습니다. 최근에 수정한 파일을 쉽게 찾을 수 있는 방법이 있으면 좋겠다고 항상 생각했지만, 항상 막막했습니다. 결과는 .git 파일이나 엉망진창이었습니다. 그래서 결국 `find` 함수를 사용하기로 했습니다. 결과는 정말 신선했습니다.

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

find [starting-point...] [expression]

찾기 명령은 다음 단계에 따라 작업을 수행합니다.

  • 각 파일과 폴더는 시작 지점 내에서 처리되며, 여러 개의 시작 지점이 지원됩니다.
  • 그는 테스트를 적용합니다. 파일이 모든 테스트를 통과하면 조치를 취합니다.
  • 작업: 기본 작업은 -print로, 전체 파일 이름을 인쇄합니다.

인수 없이 간단한 찾기 명령을 실행하면 현재 폴더 아래의 모든 항목이 표시됩니다.

linux-find-bare: Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

이는 그 자체로도 매우 유용할 수 있지만, find의 진정한 힘은 지원하는 테스트와 절차에 있습니다.

최근 변경된 파일에 대한 보고서 찾기

이처럼 복잡한 작업을 할 때는 무엇을 해야 할지 계획하고, 그 계획을 점진적으로 달성하는 방법을 모색하는 것이 좋습니다. 제가 추구하는 행동과 관련하여, 저는 다음과 같은 사항을 실천해야 한다고 생각합니다.

  • 내가 소유한 파일.
  • 숨겨진 폴더에서 파일을 찾을 수 없습니다.
  • 날짜별로 정렬된 결과이며, 날짜가 표시됩니다.

완벽하게 작동하는지 확인하기 위해 테스트 데이터를 얻는 것도 도움이 됩니다. 이 경우에는 다음과 같은 파일 구조를 사용했습니다.

linux-find-file-examples Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

사용자 소유 파일 검색

첫 번째 작업은 find-user 테스트 덕분에 쉽습니다. 이 테스트는 현재 사용자가 파일을 소유한 경우에만 해당 파일을 일치시킵니다.

find . -user "${USER}"

주의
사용자는 현재 사용자 이름을 포함하는 환경 변수입니다.

위의 명령을 실행하면 출력에 폴더가 포함되어 있는 것을 확인할 수 있습니다.

linux-find-users-files Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

최종 목록에 파일만 포함되도록 하려면 find-type 테스트를 사용하세요. 이 테스트에서는 해당 파일 유형을 나타내는 단일 문자가 필요합니다. 일반 파일은 f, 폴더는 d, 심볼릭 링크는 l 등으로 표시됩니다.

.-user를 찾으세요 "${사용자}" -유형 f

이 단계에서는 find가 현재 사용자가 소유한 모든 파일(디렉토리 제외)을 보고합니다.

 

linux-find-users-files-not-directories Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

숨겨진 폴더에서 누락된 파일 검색
작업의 다음 단계는 숨겨진 폴더에서 파일 검색을 중지하는 것입니다. `-prune` 작업은 `find` 명령이 일치하는 폴더로 내려가지 않도록 합니다.

find . -path "*/.*/*" -prune

이 결과는 처음에는 이상하게 보일 수 있으며 우리가 원하는 것과 거의 반대입니다.

linux-find-prune-paths Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

이는 prune 명령의 작동 방식 때문이며, 다음과 같은 일이 발생합니다.

  • -path 테스트는 적어도 하나의 숨겨진 폴더가 포함된 경로를 가진 모든 파일(폴더 포함)과 일치합니다.
  • -prune 명령은 find 명령이 이러한 폴더에 액세스하는 것을 방지합니다.
  • `-prune` 외에 다른 작업이 없으므로 `find` 명령은 기본적으로 `-print` 작업을 적용합니다. 이는 `find . -path “*/.*/*” -prune -print` 명령과 동일합니다.

하지만 숨겨진 폴더를 삭제하고 인쇄하는 대신 -o를 사용하면 다른 항목을 인쇄할 수 있습니다.

find . -path "*/.*/*" -prune -o -print

-o 연산자는 논리적 OR 연산자로, 검색 결과가 앞이나 뒤의 표현식과 일치함을 의미합니다. 따라서 경로에 숨겨진 폴더가 포함되어 있으면 삭제되고, 그렇지 않으면 출력됩니다(테스트가 없는 표현식은 항상 일치합니다).

이 시점에서 소유자와 파일 유형별로 필터링된 원래 표현식을 병합할 수 있습니다.

find . -path "*/.*/*" -prune -o -user "${USER}" -type f -print

이 검색 명령은 필요한 모든 파일을 식별합니다.

Linux-find-good-results: Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

이제 가장 최근의 수정 사항을 기준으로 파일을 정렬하고 각 파일 옆에 해당 날짜를 표시하는 것만 남았습니다.

주의

-path 테스트를 사용하면 약간 더 짧은 명령을 사용하여 동일한 결과를 얻을 수 있습니다.

찾기 . -type f -not -path '*/.*/*' -user “${USER}”

이 옵션을 사용하면 `-prune`을 사용한 버전과 동일한 결과를 얻을 수 있습니다. 차이점은 `-prune`이 숨겨진 폴더의 파일을 테스트하지 않기 때문에 더 효과적이라는 것입니다. 여러 폴더를 사용하는 경우, 항상 `-prune`을 사용하여 피할 수 있는 모든 폴더를 건너뛰어야 합니다.

결과를 정확하게 정렬하고 인쇄하세요

`find` 명령은 자체적으로 정렬하지 않습니다. 따라서 기본 텍스트 처리 명령인 `sort`를 사용할 수 있습니다. 먼저 각 파일의 수정 날짜가 필요합니다. `find` 명령의 `-printf` 프로시저는 정확한 결과를 얻는 방법을 지정합니다.

find . -path "*/.*/*" -prune -o -user "${USER}" -type f -printf "%TY-%Tm-%Td %p\n"

-printf 프로시저는 따옴표로 묶인 문자열 내용을 사용하여 파일 정보를 형식화합니다. 이 예에서 %TY는 마지막 수정 연도를 나타냅니다. %Tm과 %Td는 각각 월과 일을 나타내고, %p는 파일 이름입니다.

linux-find-final-sorted Linux에서 find 명령을 사용하여 파일을 빠르게 검색하는 간단한 가이드

더 정확한 정렬을 위해 더 자세한 날짜 범위를 지정할 수 있지만, 저는 날짜만 보고 싶기 때문에 마지막 단계는 데이터를 정렬로 옮기는 것입니다. 각 행을 먼저 날짜순으로 정렬한 것을 확인하세요. 이렇게 하면 두 가지 목적이 있습니다. 모든 항목의 일관성을 유지할 수 있고, 정렬도 더 쉬워집니다. "검색"에서 "정렬"로 결과를 옮기기만 하면 됩니다.

find . -path "*/.*/*" -prune -o -user "${USER}" -type f -printf "%TY-%Tm-%Td %p\n" | sort

`find` 명령어를 사용하면 파일 관리가 간소화되고 사용자가 시스템 구성을 더욱 효율적으로 제어할 수 있습니다. 반복해서 사용하면 명령어의 다양한 구문에 익숙해지고 정확한 결과를 위해 빠르게 수정할 수 있습니다. 기본 사항을 이해하면 나중에 `find`를 `grep`과 결합하거나 다른 명령어와 함께 구현하여 더욱 강력한 자동화를 구현하는 등 고급 용도로 전환하는 데 도움이 됩니다.

맨 위로 이동 버튼