모든 디렉토리에서 파일을 찾는 방법

모든 디렉토리에서 파일을 찾는 방법

다음과 같은 파일을 찾으려고 합니다.제1권.

내 테스트에서는 앞서 언급한 파일을 찾으려고 하는데 이번 테스트에서는 해당 파일이 어디에 있는지 알 수 없습니다.

시도했지만 find / -iname book1출력이 없습니다.

파일이 어디에 있는지 모르는 경우 명령줄을 사용하여 book1이라는 파일을 어떻게 찾나요?

편집하다:

내 시나리오는 아래에 더 자세히 설명되어 있습니다.

  1. 파일 확장자를 알 수 없습니다.
  2. 정확한 이름(예: 대문자, 숫자 등)을 알 수 없습니다.
  3. 파일 위치를 알 수 없습니다.

답변1

첫째, 인수는 -iname쉘입니다.무늬. 패턴에 대한 자세한 내용은 다음에서 확인할 수 있습니다.배쉬 매뉴얼. 요점은 find실제로찾다파일의 파일 이름은 지정된 패턴과 일치해야 합니다. 대소문자를 구분하지 않는 문자열 book1일치를 만들려면 다음과 같이 Book1.gnumeric추가해야 합니다 .*

find / -iname 'book1*'

또는 전체 이름을 지정하세요.

find / -iname 'Book1.gnumeric'

둘째, 파일 이름 대소문자를 무시 -iname하게 되므로 지정하면 find 등도 수행할 수 있습니다 . 찾고 있는 파일이 호출되었다고 확신하는 경우 but을 사용하지 않는 것이 더 빠릅니다.find-iname book1Book1bOok1Book1.gnumeric-iname-name

find / -name 'Book1.gnumeric'

셋째, 앞서 언급한 패턴을 인용하는 것을 기억하세요.다른 답변.

마지막으로 파일을 찾으시겠습니까? 어디에나당신의 시스템에? 찾고 있는 파일이 실제로 $HOME작업했거나 어딘가에서 다운로드했다면 해당 파일이 디렉터리에 있을 수도 있습니다. 다시 말하지만, 훨씬 더 빠를 수도 있습니다.

편집하다:

질문을 수정하신 것으로 확인되었습니다. 전체 파일 이름, 대문자 사용 및 위치를 실제로 모르는 경우 다음과 같이 사용해야 합니다.

find / -iname 'book1*'

또한 루트가 아닌 사용자로 호출할 경우 나타나는 2>/dev/null모든 오류 및 기타 오류를 숨기려면 줄 끝에 넣는 것이 좋습니다 .*permission denied*find

find / -iname 'book1*' 2>/dev/null

그리고 단일 파일을 찾고 있다고 확신하고 시스템에 기준과 일치하는 파일이 하나만 있는 경우 find첫 번째 일치하는 파일을 찾은 후 종료하도록 지시할 수 있습니다.

find / -iname 'book1*' -print -quit 2>/dev/null

답변2

명령 을 시도해 볼 수 있습니다 locate. 더 빠른 검색을 위해 파일 이름 데이터베이스를 사용합니다.

일치하는 모든 파일을 검색 *book1*하고 대소문자를 무시하려면 다음을 사용할 수 있습니다.

locate -i book1

파일을 검색하고 싶다면시작book1와일드카드를 직접 작성해야 합니다 .

locate -i 'book1*'

보다 훨씬 빠르지만 find데이터베이스를 마지막으로 새로 고친 시점만큼만 최신 상태입니다.

답변3

이라는 파일이 있고 book1.something파일 위치, 의 정확한 값 something, 파일 이름의 대문자 사용 패턴을 모두 알 수 없는 경우:

find / -iname 'book1.*'

확실히 아는 것이 파일 이름에 단어가 포함되어 있다는 것이라면 book다음을 사용하여 훨씬 더 큰 목록을 생성할 수 있습니다.

find / -iname '*book*'

인수는 -name쉘 글로브 패턴입니다. 파일이 있는 디렉토리에서 다음을 비교하십시오.

$ ls Book1
ls: cannot access 'Book1': No such file or directory
$ ls Book1.*
Book1.gnumeric

이는 에서 수행하는 검색 종류를 나타냅니다 -name. 이 -iname옵션은 단순히 대소문자를 구분하지 않는 버전을 허용합니다.

답변4

Zsh를 사용하면 glob 패턴을 사용할 수 있으므로 이 방법도 작동합니다.

ls -a /**/book1

그러면 파일이라는 파일이 있는 모든 위치를 찾습니다 book1.

내 테스트에서는 이 방법이 를 사용하는 것보다 더 빠른 것으로 보이며 find, 결과도 거의 또는 전혀 생성되지 않습니다.사용자 권한 오류루트 권한 없이 실행할 때

보다수동.

관련 정보