6

grepを使用して、ユーザーのbinフォルダーにあるbibtexプログラムを自動的に見つけようとしています。

問題は、bibtexという名前のディレクトリが頻繁に返されることです。これは、スクリプトがコマンドを自動的に実行できないことを意味します。

grep(または実際にはlocateコマンド)にディレクトリを自動的に無視させるにはどうすればよいですか?

編集:現在のコマンドは次のとおりです。locate bibtex | grep "/bibtex$" -d skip | head -n1

4

4 に答える 4

12

コマンドfind

find /bin -name bibtex -type f

通常のファイルであるタイプ「f」のファイル名「bibtex」を探します。

于 2012-05-07T14:37:02.410 に答える
4
locate --basename '\bibtex' --limit 1

grepとの必要性を排除しますがhead、それでも結果がディレクトリであるかどうかの問題は解決しません。

なぜあなたはしないのですか:

type -P bibtex

PATHその名前でプログラムを検索するのはどれですか?

于 2012-05-07T14:44:28.900 に答える
2

私は正確に理解していないので、おそらく私の解決策は間違っています.なぜあなたはwhichを使用しないのですか? またはbibtexPATHにありませんか?

于 2012-05-07T16:39:29.233 に答える
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

于 2012-05-07T15:01:27.697 に答える