Как я могу заставить grep только возвращать файлы и игнорировать каталоги?
Я пытаюсь использовать grep, чтобы автоматически найти программу bibtex в папке bin пользователя.
Проблема в том, что он часто возвращает каталог с именем bibtex, что означает, что сценарий не может автоматически выполнить команду.
Как я могу заставить grep (или действительно команду locate) автоматически игнорировать каталоги?
РЕДАКТИРОВАТЬ: текущая команда: locate bibtex | grep "/bibtex$" -d skip | head -n1
4 ответа
Вздох, не мой чистейший, но это работает. perl -ne 'chomp($f=$_);print if !-d $f'
который делает вашу команду locate bibtex | perl -ne 'chomp($f=$_);print if !-d $f' | grep "/bibtex$" -d skip | head -n1
find
команда?
find /bin -name bibtex -type f
Ищет имя файла "bibtex" типа "f", который является обычным файлом.
locate --basename '\bibtex' --limit 1
Устраняет необходимость grep
а также head
, но все еще не решает вопрос о том, является ли результат каталогом.
Почему бы тебе не сделать:
type -P bibtex
который будет выглядеть в PATH
для программы с таким именем?
Я не совсем понимаю, так что, возможно, мое решение неверно: почему вы не используете какой? Или bibtex не в PATH?