다음과 같은 파일을 찾으려고 합니다.제1권.
내 테스트에서는 위의 파일을 찾으려고 하는데 이 테스트에서는 파일이 어디에 있는지 알 수 없습니다.
시도해 보았지만 find / -iname book1
출력이 없습니다.
파일이 어디에 있는지 모르는 경우 명령줄을 사용하여 book1이라는 파일을 어떻게 찾을 수 있나요?
편집하다:
내 시나리오는 아래에 더 자세히 설명되어 있습니다.
- 파일 확장자를 알 수 없음
- 정확한 이름(예: 대문자, 숫자 등)은 알 수 없습니다.
- 파일 위치를 알 수 없음
답변1
먼저 매개변수 -iname
는 쉘입니다.무늬. 패턴에 대해 자세히 알아볼 수 있습니다.배쉬 매뉴얼. 요점은 find
정말로찾다파일의 파일 이름은 지정된 패턴과 일치해야 합니다. 대소문자를 구분하지 않는 문자열 book1
일치를 활성화하려면 다음과 같은 항목을 Book1.gnumeric
추가해야 합니다 .*
find / -iname 'book1*'
또는 전체 이름을 지정하세요.
find / -iname 'Book1.gnumeric'
둘째, 파일 이름 대소문자는 무시 -iname
되므로 지정하면 찾을 수도 있습니다 . 찾고 있는 파일이 호출되었다고 확신하는 경우에는 사용하지 말고 을 사용 하면 더 빨라집니다.find
-iname book1
Book1
bOok1
Book1.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
으며 결과도 거의 나오지 않았습니다.사용자 권한 오류루트 권한 없이 실행하는 경우
바라보다수동.