如何强制grep只返回文件并忽略目录?

时间:2012-05-07 14:34:05

标签: bash unix grep locate

我正在尝试使用grep自动在用户的bin文件夹中找到bibtex程序。

问题是,它经常返回一个名为bibtex的目录,这意味着该脚本无法自动运行该命令。

如何强制grep(或者确实是locate命令)自动忽略目录?

编辑:当前命令为:locate bibtex | grep "/bibtex$" -d skip | head -n1

4 个答案:

答案 0 :(得分:12)

find命令?

find /bin -name bibtex -type f

查找“f”类型的文件名“bibtex”,这是一个常规文件。

答案 1 :(得分:4)

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

无需grephead,但仍无法解决结果是否为目录的问题。

你为什么不这样做:

type -P bibtex

会在PATH中查找该名称的程序吗?

答案 2 :(得分:2)

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

答案 3 :(得分: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