웹사이트 검색

'find' 명령을 사용하여 디렉토리를 보다 효율적으로 검색하는 방법


이 튜토리얼에서는 Linux에서 디렉토리를 찾는 다양한 방법을 안내합니다. 이미 알고 있듯이 Linux에서는 모든 것이 디렉터리를 포함한 파일입니다. 그리고 Linux 사용자가 명령줄 내에서 수행하는 일반적인 작업 중 하나는 파일이나 디렉터리를 검색하는 것입니다.

find, locate which와 같이 명령줄에서 파일을 검색하는 데 사용되는 여러 가지 수단과 유틸리티가 있습니다. 그러나 마지막 유틸리티( which)는 명령을 찾는 데에만 사용됩니다.

이 튜토리얼에서는 주로 라이브 Linux 파일 시스템에서 파일을 검색하고 찾기에 비해 더 효율적이고 안정적인 find 유틸리티에 중점을 둘 것입니다.

locate의 단점은 updatedb에 의해 생성된 하나 이상의 데이터베이스를 읽고 라이브 파일 시스템을 검색하지 않는다는 것입니다. 또한 검색 위치(시작점)에 대한 유연성도 제공하지 않습니다.

다음은 locate 명령을 실행하는 구문입니다.

locate [option] [search-pattern]

찾기의 단점을 설명하기 위해 현재 작업 디렉터리에서 pkg라는 디렉터리를 검색한다고 가정해 보겠습니다.

참고: 아래 명령에서 --basename 또는 -b 옵션은 찾기<를 나타냅니다.을 사용하면 파일(디렉토리) 기본 이름(정확히 pkg)만 일치하고 경로(/path/to/pkg)는 일치하지 않습니다. \가 글로빙 문자인 경우 pkg*pkg*로 암시적으로 바꾸는 것을 비활성화합니다.

locate --basename '\pkg'

위의 명령 출력에서 볼 수 있듯이 locate는 루트 (/) 디렉터리부터 검색하므로 동일한 이름을 가진 다른 디렉터리가 일치됩니다.

따라서 이 문제를 해결하려면 아래의 간단한 구문을 따라 찾기를 사용하세요.

find starting-point options [expression]

몇 가지 예를 살펴보겠습니다.

위의 동일한 디렉터리 (pkg)를 검색하려면 현재 작업 디렉터리 내에서 다음 명령을 실행합니다. 여기서 -name 플래그는 이 경우에 해당하는 표현식을 읽습니다. 디렉토리 기본 이름.

find . -name "pkg"

'권한 거부' 오류가 발생하면 다음과 같이 sudo 명령을 사용하세요.

sudo find . -name "pkg"

다음과 같이 -type 플래그를 사용하여 파일 형식을 지정하면(아래 명령에서 d는 디렉터리를 의미함) find가 디렉터리를 제외한 다른 파일 형식을 검색하지 못하게 할 수 있습니다.

sudo find . -type d -name "pkg"

또한 긴 목록 형식으로 디렉터리를 나열하려면 작업 스위치 -ls를 사용하세요.

sudo find . -type d -name "pkg" -ls

다음으로 -iname 옵션을 사용하면 대소문자를 구분하지 않는 검색이 활성화됩니다.

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

더 흥미롭고 고급 사용법 정보를 찾으려면 찾기찾기 매뉴얼 페이지를 읽어보세요.

man find
man locate

마지막으로, find 명령은 locate 명령과 비교할 때 Linux 시스템에서 파일(또는 디렉터리)을 검색하는 데 더 안정적이고 효율적입니다.

이전과 마찬가지로 아래 댓글 섹션을 통해 피드백이나 질문을 보내주시기 바랍니다. 마지막으로, 항상 Tecmint에 연결되어 있어야 합니다.