2012-05-07 44 views
5

我正在嘗試使用grep來自動在用戶的bin文件夾中找到bibtex程序。如何強制grep只返回文件並忽略目錄?

問題是,它經常返回一個名爲bibtex的目錄,這意味着該腳本無法自動運行該命令。

我該如何強制grep(或確實是locate命令)自動忽略目錄?

編輯:電流指令是:locate bibtex | grep "/bibtex$" -d skip | head -n1

回答

1

嘆息,不是我的乾淨的,但它的作品。 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

順便說一句,你可以縮短,要'perl的-lne「打印如果-d''(爲Chomp似乎沒有必要,如果它是那麼'perl的-lne!‘格格;如果打印-D’! ')。 –

12

find命令?

find /bin -name bibtex -type f 

查找類型爲「F」,這是一個普通的文件的文件名「中文提供」。

+1

icecreamhead,馬上接受這個答案,因爲你的搜索已經結束:-) –

+0

這個答案確實工作,但它需要很多,很多長於定位,這是不是在這種情況下 – icecreamhead

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

消除了對grephead的需要,但仍然沒有解決的結果是否是一個目錄的問題。

你爲什麼不這樣做:

type -P bibtex 

將看在PATH由該名稱的計劃?

+0

型-P中文提供完美的作品理想! – icecreamhead

2

我不明白究竟所以也許我的解決辦法是錯誤的:你爲什麼不使用which?或bibtex不在PATH