Для обработки действительно произвольных имен файлов в * nix неожиданно сложно, гранича с невозможным. Чтобы получить впечатление: This и this от этого же автора.
Так что необходимо найти все файлы в форме «xy.cert», но только тех. Мы не хотим находить «xycert» или «xy.certificate».
Если мы можем считать имена файлов, которые не имеют пробела после «.cert» (например, «xy.cert my butt», который является законным именем файла в современных файловых системах), мы можем просто использовать '\.cert\>'
. Это находит любое появление «.cert» с пробелом после него или в EOF. \>
обозначает конец слова, так что «xy.certificate» не соответствует.
Если поиск файлов с именем «.cert» не нужен, мы должны сказать '[^[:space:]]+\.cert\>'
, как в моем комментарии. (Я изменил звездочку на плюс, чтобы обеспечить как минимум один пробел в имени файла перед точкой.) Я должен использовать egrep
для этого шаблона.
Просто попробуйте 'grep -r '.cert $''. Это даст вам все записи, которые заканчиваются на '.cert' – sisanared
@sisanared. Ваше предложение найдет шаблон только в конце строки. Если имя файла находится в некотором непрерывном тексте, хотя шаблон должен заканчиваться границей слова: '.. * \. Cert \> ''. Фактически, он должен исключать пробелы из имени файла, или он найдет всю строку до «.cert». Что-то вдоль '' [^ [: space:]] * \. Cert \> ''(untested). Предполагая, что имена файлов не могут содержать пробелы. –