웹사이트 검색

초보자를 위한 Linux Locate 명령(예제 8개)


이 페이지에서

  1. 1. 찾기 명령 설치
  2. 2. Linux에서 위치 찾기 명령을 사용하는 방법\n
  3. 3. 위치 찾기 명령이 작동하는 방식 또는 속도가 빠른 이유\n
  4. 4. 출력에서 일치하는 항목의 수 또는 개수를 인쇄하는 방법\n
  5. 5. 기존 파일에 해당하는 항목만 인쇄하도록 강제로 찾는 방법\n
  6. 6. 대소문자 구분 무시를 찾는 방법
  7. 7. ASCII NUL로 출력 항목을 구분하는 방법\n
  8. 8. 데이터베이스 찾기에 대한 정보를 보는 방법\n
  9. 9. 위치 찾기를 사용하여 정확한 파일 이름을 검색하는 방법\n
  10. 결론

find 명령은 의심할 여지 없이 Linux에서 파일 검색을 위한 가장 인기 있고 강력한 명령줄 유틸리티 중 하나이지만 즉각적인 결과가 필요한 상황에서는 충분히 빠르지 않습니다. 명령줄에서 시스템의 파일을 검색하고 속도가 최우선 순위인 경우 사용할 수 있는 다른 명령이 있습니다. Locate.

이 자습서에서는 이해하기 쉬운 예제를 사용하여 찾기 명령을 설명합니다. 여기에 언급된 모든 지침/예제는 Ubuntu 22.04 LTS에서 테스트되었으며 우리가 사용하는 위치는 버전 4.8.0입니다.

1. 찾기 명령 설치

찾기 명령은 Ubuntu 및 Debian Linux에 사전 설치되지 않습니다. 다음 명령을 사용하여 설치할 수 있습니다.

sudo apt install locate

Locate는 미리 컴파일된 파일 이름 데이터베이스를 기반으로 파일 검색을 수행하므로 예를 들어 다음보다 훨씬 빠릅니다. 후속 검색을 수행할 때 find 명령. 하지만 사용하기 전에 파일 데이터베이스를 만들고 업데이트해야 합니다. 다음 명령을 실행하여 찾기 데이터베이스를 생성합니다.

sudo updatedb

이제 위치 찾기를 사용할 준비가 되었습니다.

2. Linux에서 locate 명령을 사용하는 방법

찾기 명령은 사용하기 매우 쉽습니다. 검색할 파일 이름을 전달하기만 하면 됩니다.

locate [filename]

예를 들어 문자열 dir2가 포함된 모든 파일 이름을 검색하려는 경우 다음과 같은 방법으로 locate를 사용하여 검색할 수 있습니다.

참고: locate dir2(별표 없음) 명령은 전달한 이름(예: NAME)을 암시적으로 *NAME*으로 대체하는 역할도 합니다.

3. 위치 찾기 명령이 작동하는 방식 또는 속도가 빠른 이유

찾기가 빠른 이유는 검색된 파일 또는 디렉토리 이름에 대해 파일 시스템을 읽지 않기 때문입니다. 이것은 실제로 데이터베이스(updatedb 명령으로 준비됨)를 참조하여 사용자가 찾고 있는 것을 찾고 해당 검색을 기반으로 출력을 생성합니다.

이것은 좋은 접근 방식이지만 단점도 있습니다. 주요 문제는 시스템에 모든 새 파일이나 디렉토리가 생성된 후 제대로 작동하려면 도구 데이터베이스를 업데이트해야 한다는 것입니다. 그렇지 않으면 명령이 마지막 데이터베이스 업데이트 후에 생성된 파일/디렉토리를 찾을 수 없습니다.

예를 들어 내 시스템의 다운로드 디렉터리에서 tosearch 문자열이 포함된 이름을 가진 파일을 찾으려고 하면 find 명령이 출력에 하나의 결과를 생성합니다.

그러나 locate 명령을 사용하여 동일한 검색을 수행하려고 하면 출력이 생성되지 않습니다.

즉, 파일이 시스템에 생성된 후 데이터베이스 위치 검색이 업데이트되지 않았음을 의미합니다. 따라서 updatedb 명령을 사용하여 수행할 수 있는 데이터베이스를 업데이트하겠습니다. 방법은 다음과 같습니다.

sudo updatedb

이제 동일한 찾기 명령을 다시 실행하면 출력에 파일이 표시됩니다.

마찬가지로 파일이나 디렉터리를 제거한 후에는 데이터베이스 찾기가 업데이트되었는지 확인해야 합니다. 그렇지 않으면 명령이 검색할 때 출력에 파일을 계속 표시합니다.

4. 출력에서 일치하는 항목의 수 또는 개수를 인쇄하는 방법

우리가 본 바와 같이, locate 명령은 출력에서 전체 경로 또는 절대 경로와 함께 일치하는 파일의 이름을 생성합니다. 그러나 원하는 경우 도구에서 이 모든 정보를 표시하지 않고 일치하는 항목의 수 또는 개수만 인쇄하도록 할 수 있습니다. 이것은 -c 명령줄 옵션을 사용하여 수행할 수 있습니다.

5. 기존 파일에 해당하는 항목만 인쇄하도록 강제로 찾는 방법

이 문서의 앞부분에서 이미 설명한 것처럼 파일이 시스템에서 제거된 경우 데이터베이스 찾기를 다시 업데이트할 때까지 명령은 해당 파일 이름을 출력에 계속 표시합니다. 그러나 이 특정한 경우에는 데이터베이스 업데이트를 건너뛸 수 있으며 -e 명령줄 옵션을 사용하여 올바른 결과를 출력할 수 있습니다.

예를 들어 내 시스템에서 filetosearch.txt 파일을 제거했습니다. 이것은 더 이상 파일을 검색할 수 없는 find 명령으로 확인되었습니다.

그러나 찾기를 사용하여 동일한 작업을 수행했을 때 여전히 출력에 파일이 표시되었습니다.

그리고 우리는 그 이유를 알고 있습니다. 파일이 삭제된 후 데이터베이스가 업데이트되지 않았기 때문입니다. 그러나 -e 옵션을 사용하면 트릭을 수행했습니다.

찾기 매뉴얼 페이지에서 이 옵션에 대해 설명하는 내용은 다음과 같습니다. "찾기가 실행될 때 존재하는 파일을 참조하는 항목만 인쇄합니다."

6. 대소문자 구분 무시 위치 지정 방법

기본적으로 locate 명령이 수행하는 검색 작업은 대소문자를 구분합니다. 그러나 -i 명령줄 옵션을 사용하여 도구가 대소문자 구분을 무시하도록 강제할 수 있습니다.

예를 들어 내 시스템에는 newfiletosearch.txt와 NEWFILETOSEARCH.txt라는 두 개의 파일이 있습니다. 보시다시피 파일 이름은 동일하고 대소문자만 다릅니다. 예를 들어 "*tosearch*"를 검색하도록 locate에 요청하면 출력에 소문자 이름만 표시됩니다.

그러나 -i 명령줄 옵션을 사용하면 명령이 대소문자를 무시하고 두 파일 이름이 모두 출력에 생성됩니다.

7. 출력 항목을 ASCII NUL로 구분하는 방법

기본적으로 locate 명령이 생성하는 출력 항목은 줄 바꿈(\n) 캐릭터. 그러나 원하는 경우 구분 기호를 변경하고 개행 대신 ASCII NUL을 사용할 수 있습니다. 이것은 -0 명령줄 옵션을 사용하여 수행할 수 있습니다.

예를 들어 위의 마지막 섹션에서 사용한 것과 동일한 명령을 실행했지만 -0 명령줄 옵션을 추가했습니다.

따라서 새 줄 구분 기호가 더 이상 존재하지 않는 것을 볼 수 있습니다. NUL로 대체되었습니다.

8. 위치 찾기 데이터베이스에 대한 정보를 보는 방법

사용 중인 데이터베이스 위치와 데이터베이스에 대한 기타 통계를 알고 싶은 경우 -S 명령줄 옵션을 사용하십시오.

9. 위치 찾기를 사용하여 정확한 파일 이름을 검색하는 방법

기본적으로 찾기를 사용하여 파일 이름을 검색하면 전달한 이름(예: NAME)이 암시적으로 *NAME*으로 대체됩니다. 예를 들어 파일 이름 testfile을 검색하면 *testfile*과 일치하는 모든 이름이 출력에 생성됩니다.

그러나 요구사항이 testfile과 정확히 일치하는 이름을 가진 파일을 검색하는 것이라면 어떻게 될까요? 이 경우 -r 명령줄 옵션을 사용하여 활성화할 수 있는 정규식을 사용해야 합니다. 따라서 정규식을 사용하여 testfile만 검색하는 방법은 다음과 같습니다.

locate -r /testfile$

정규식을 처음 사용하는 경우 쉘의 head cd 명령을 사용하십시오.

결론

Locate는 훨씬 더 많은 옵션을 제공하지만 여기에서 논의한 옵션은 명령줄 유틸리티에 대한 기본 개념을 제공하고 시작하는 데 충분해야 합니다. Linux 시스템에서 여기 설명된 모든 옵션을 시도한 다음 도구 매뉴얼 페이지에서 찾을 수 있는 다른 옵션으로 전환하는 것이 좋습니다.

질문이나 질문이 있으시면 언제든지 의견을 남겨주세요.