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

消除了grepand的需要head,但仍然没有解决结果是否是目录的问题。

你为什么不这样做:

type -P bibtex

哪个将在该PATH名称中查找程序?

于 2012-05-07T14:44:28.900 回答
2

我不完全理解,所以也许我的解决方案是错误的:你为什么不使用which?或者bibtex不在PATH中?

于 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 回答