문제

내 시스템에 설치된 쉘 스크립트 파일을 찾고 있는데, 찾다 작동하지 않습니다:

$ find /usr -name *.sh

하지만 나는 거기에 엄청난 양의 스크립트가 있다는 것을 알고 있습니다.예를 들어:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh  
/usr/local/lib/tkConfig.sh

왜 그렇지 않습니까? 찾다 일하다?

도움이 되었습니까?

해결책

와일드카드를 인용해 보세요.

$ find /usr -name \*.sh

또는:

$ find /usr -name '*.sh'

일치하는 파일이 있는 경우 *.쉿 현재 작업 디렉토리에서 와일드카드는 find가 보기 전에 확장됩니다.작업 디렉터리에 tkConfig.sh라는 파일이 있는 경우 찾다 명령은 다음으로 확장됩니다.

$ find /usr -name tkConfig.sh

그러면 tkConfig.sh라는 파일만 찾을 수 있습니다.일치하는 파일이 두 개 이상인 경우 *.쉿, 다음에서 구문 오류가 발생합니다. 찾다:

$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list

그 이유는 와일드카드가 두 파일 모두로 확장되기 때문입니다.

$ find /usr -name tclConfig.sh tkConfig.sh

와일드카드를 인용하면 와일드카드가 조기에 확장되는 것을 방지할 수 있습니다.

또 다른 가능성은 /usr 또는 그 하위 디렉터리 중 하나가 심볼릭 링크일 수 있다는 것입니다. 찾다 일반적으로 링크를 따르지 않으므로 -따르다 옵션:

$ find /usr -follow -name '*.sh'

다른 팁

일부 시스템(예: Solaris)에는 기본 작업이 없으므로 -print 명령을 추가해야 합니다.

find /usr -name '*.foo' -print

디스크에서 파일을 찾으려면 린드 린은 즉각적인 "위치"를 사용하십시오 (매일 내장 된 색인을 살펴보십시오).

locate '/usr*.sh'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top