Фильтрация списка файлов с использованием grep - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь перечислить файлы в указанном каталоге c, чье имя не соответствует определенному шаблону. Например, перечислить все файлы не , заканчивающиеся на ab c .yml. Для этого я использую команду:

ls | grep -v "*abc.yml"

Однако я все еще вижу файлы, заканчивающиеся на ab c .yml, что я тут не так делаю?

1 Ответ

1 голос
/ 12 марта 2020

Звездочка имеет другое значение в регулярных выражениях. На самом деле, если поместить его в начало выражений, оно будет соответствовать буквально. Вы можете удалить его, так как grep пытается найти выражение в любом месте строки, но не пытается найти соответствие всей строке. Чтобы добавить привязку «конец строки», добавьте $. Кроме того, . соответствует любому символу, используйте \. для буквального совпадения с точкой:

ls | grep -v 'abc\.yml$'

В некоторых оболочках вы можете использовать расширенное перетаскивание для вывода списка файлов без необходимости перенаправления в grep. Например, в bash:

shopt -s extglob
ls !(*abc.yml)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...