'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에 연결되어 있어야 합니다.