2012-05-07 2 views
5

grep을 사용하여 사용자의 bin 폴더에있는 bibtex 프로그램을 자동으로 찾으려고합니다.grep이 파일을 반환하고 디렉토리를 무시하도록 강제 할 수 있습니까?

문제는 자주 스크립트가 자동으로 명령을 실행하지 못하는 것을 의미한다 이름하여 BibTex와 디렉토리를 반환합니다.

어떻게 그렙 강제 할 수 있습니다 (또는 실제로 명령 위치) 자동으로 디렉토리를 무시를?

편집 : 현재 명령은 다음과 같습니다 locate bibtex | grep "/bibtex$" -d skip | head -n1

답변

1

한숨은 나의 깨끗한,하지만 그것을 작동합니다. 왜 which를 사용하지 않는 : perl -ne 'chomp($f=$_);print if !-d $f'

이는 이해가 안 locate bibtex | perl -ne 'chomp($f=$_);print if !-d $f' | grep "/bibtex$" -d skip | head -n1

+0

'-d skip'은'grep'에 대한 입력이'stdin'이기 때문에 아무런 행동도하지 않습니다. 명령을 'perl -ne'chomp로 단축 할 수 있습니다. 면 인쇄! -d'' –

+0

그게 처음이었는데, 누락 된 줄 바꿈이 파이프 체인에 문제가 생길지 확신 할 수 없었습니다. 그런 식으로 긴장된 넬리 인 것 같아요. 그런데 –

+0

, 당신은! '의 -d''합니다 (씹는 필요로하지 않는 것 같습니다 경우 다음'펄 -lne 인 경우, 인쇄'씹는 '펄 -lne 해당 단축 할 수 있습니다 인쇄 할 경우 -d'!의 '). –

12

find 명령은?

find /bin -name bibtex -type f 

는 일반 파일 형식 "F"의 파일 이름 "하여 BibTex"을 찾습니다.

+1

icecreamhead 검색이 끝났을 때 즉시이 대답을 수락하십시오. –

+0

이 답변은 실제로 작동하지만 위치를 파악하는 것보다 훨씬 오래 걸립니다.이 상황에서는 이상적이지 않습니다. – icecreamhead

4
locate --basename '\bibtex' --limit 1 

는 결과가 디렉토리인지의 문제가 해결되지 않고 여전히 grephead에 대한 필요가 없습니다,하지만.

왜하지 않는다 :

type -P bibtex 

그 이름의 프로그램에 대한 PATH에 볼 것이다?

+0

유형 -P bibtex는 완벽하게 작동합니다. ! – icecreamhead

2

정확히 그래서 아마 내 솔루션이 잘못된 명령 무엇입니까? 또는 하여 BibTexPATH에 있지?