我正在尝试使用grep自动在用户的bin文件夹中找到bibtex程序。
问题是,它经常返回一个名为bibtex的目录,这意味着该脚本无法自动运行该命令。
如何强制grep(或者确实是locate命令)自动忽略目录?
编辑:当前命令为:locate bibtex | grep "/bibtex$" -d skip | head -n1
答案 0 :(得分:12)
find
命令?
find /bin -name bibtex -type f
查找“f”类型的文件名“bibtex”,这是一个常规文件。
答案 1 :(得分:4)
locate --basename '\bibtex' --limit 1
无需grep
和head
,但仍无法解决结果是否为目录的问题。
你为什么不这样做:
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