grepを使用して、ユーザーのbinフォルダーにあるbibtexプログラムを自動的に見つけようとしています。
問題は、bibtexという名前のディレクトリが頻繁に返されることです。これは、スクリプトがコマンドを自動的に実行できないことを意味します。
grep(または実際にはlocateコマンド)にディレクトリを自動的に無視させるにはどうすればよいですか?
編集:現在のコマンドは次のとおりです。locate bibtex | grep "/bibtex$" -d skip | head -n1
コマンドfind?
find /bin -name bibtex -type f
通常のファイルであるタイプ「f」のファイル名「bibtex」を探します。
locate --basename '\bibtex' --limit 1
grepとの必要性を排除しますがhead、それでも結果がディレクトリであるかどうかの問題は解決しません。
なぜあなたはしないのですか:
type -P bibtex
PATHその名前でプログラムを検索するのはどれですか?
私は正確に理解していないので、おそらく私の解決策は間違っています.なぜあなたはwhichを使用しないのですか? またはbibtexがPATHにありませんか?
ため息、私の最もきれいではありませんが、うまくいきます。perl -ne 'chomp($f=$_);print if !-d $f'
あなたのコマンドを作るlocate bibtex | perl -ne 'chomp($f=$_);print if !-d $f' | grep "/bibtex$" -d skip | head -n1