파일이 있습니다 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
유닉스에서 특정 확장자를 가진 모든 파일 찾기?
내 하드 드라이브에 * .jdk가 있는지 확인하려고합니다. 따라서 검색 명령을 수행합니다.
find . -name "*.jdk"
하지만 아무 것도 찾지 못합니다. 내가 아는 사람조차도. 어째서?
파일이 있습니다 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
유닉스에서 특정 확장자를 가진 모든 파일 찾기?
내 하드 드라이브에 * .jdk가 있는지 확인하려고합니다. 따라서 검색 명령을 수행합니다.
find . -name "*.jdk"
하지만 아무 것도 찾지 못합니다. 내가 아는 사람조차도. 어째서?
find .
은 현재 디렉토리에서 찾습니다. 그
find/-type f -name "*.jdk"
- 당신이 다른 디렉토리에있는 파일 (루트 액세스)를 찾을 수있는 권한이 경우에 당신은 당신의 파일을 찾을 수를 사용할 수 있습니다
find/-type f -name "*.jdk" 2> /dev/null
아마도 귀하의 JDK는 대문자이거나 OS X에서 사용 가능한 find
버전은 동작이 지정되지 않은 경우 기본값이 -print
이 아닙니다. 시도 :
find . -iname "*.jdk" -print
을 (-iname
이 -name
비슷하지만, 대소 문자를 구별 일치를 수행, -print
는 결과를 출력 할 find
을 말한다)에서 언급 한 바와 같이 ---
--- 편집
을 @Jaypal, 분명히 find .
... 현재 디렉토리 (및 하위 디렉토리) 만보고 전체 드라이브를 검색하려면 /
을 검색 경로로 지정해야합니다.
사용해야하는 이유 '-print', ISN'
당신은 아마 이런 맥락에서 원하는 무엇는 *
와 같이 "탈출"할 수
find /System -name '*.jdk'
입니다 ... 또는 기본값은 무엇입니까? –
@giannischristofakis : 방금 POSIX 표준을 확인했습니다. 예, 기본값입니다. 아마 예전 GNU를 두려워서 명시 적으로 썼을 것입니다 (예를 들어, GNU에서는'.'을 생략 할 수 있지만 BSD의 IIRC는 필요하다는 것을 알기 때문에). –
'.' 현재 디렉토리가 사용 중입니다. 홈 디렉토리에서 시작한다면 아마도 JDK 파일이 누락 될 것입니다.
최악의 경우 검색을 사용하면 JDK 파일에 부모가해야 특정 몇 가지 경로로 '/'대체
find/-name '*.jdk' -o -name '*.JDK' -print
그렇지 않으면 루트에서 시작하는 것입니다.
이 정보가 도움이되기를 바랍니다.
A/
find .
수단 "(현재 디렉토리부터) 찾을 수 있습니다." 전체 시스템을 검색하려면 find /
을 사용하십시오. 그것은 와일드 카드 주위에 작은 따옴표를 사용하는 것이 더 안전 등
B/
, find /System/Library
사용 /System/Library
에서 검색 할 수 있습니다. *라는 파일이없는 경우.당신이 그것을 실행할 때 현재 디렉토리에 junk.jdk
및 foo.jdk
을 파일을 가지고, 그러나, 당신이 일어날 경우,
find . -name *.jdk
: 작업 디렉토리에 JDK는이 프로그램을 실행할 때, 다음 find
는의 명령 줄을 얻을 것이다 find
대신 시작됩니다 (두 있기 때문에)을 혼동하고, 밖으로 에러가 발생합니다
find . -name junk.jdk foo.jdk
.... 당신이 다음 foo.jdk
을 삭제하고 다시 똑같은 일을 할 경우 (예를 들어) 1.6.0.jdk
라는 이름의 파일을 찾을 수 없을 것입니다
find . -name junk.jdk
을 ...이 것입니다.
find /System -name \*.jdk
@Prostak, 이것은 디렉토리가 아닌 일반 파일 만 표시합니다. '-type f'는 심볼릭 링크, 디렉토리, 장치 등을 걸러내는 것입니다. – BRFennPocock
나는 이것을 정답으로 표시했다. 하지만 두 분 모두 도와 주셔서 감사합니다! – Prostak