Обнаружение шаблона в конце строки с помощью grep

Если я сделаю:

$ ls -R .: 4Shared/ Cloud/ ./4Shared: UFAIZLV2R7.part3.rar ./Cloud: UFAIZLV2R7.part2.rar.part UFAIZLV2R7.part1.rar.part UFAIZLV2R7.part4.rar.part 

Если я хочу только перечислить только файлы .rar , и я использую grep , он также покажет мне файлы .rar.part , чего я не хочу.
Я решаю это с помощью find или ls **/*.rar как сказано в этой статье, и они работают нормально, но я хотел бы узнать, можно ли это сделать через grep .

Я пробовал (думая об EOL ):

 ls -R | grep ".rar\n" 

без каких-либо результатов.
Я думаю, что проблема заключается в обнаружении, если greping найден в конце строки , но я не уверен.

Любая помощь здесь, пожалуйста?

  • Может ли grep выводить только указанные группы, которые соответствуют?
  • Как объединить grep с несколькими аргументами и разными выходными переключателями
  • Условный grep без тихой опции
  • Почему добавление двоеточия нарушает этот шаблон grep?
  • Ссылочный псевдоним Grep на nano. Ничего не происходит, когда команда выдается
  • Получить конкретное слово и следующий текст
  • Поиск дубликатов экземпляров тега в файле
  • Сравните различные IP-адреса в двух файлах?
  • 4 Solutions collect form web for “Обнаружение шаблона в конце строки с помощью grep”

    $ Anchor соответствует концу строки.

     ls -R | grep '\.rar$' 

    Вы также можете использовать find для этого:

     find . -name '*.rar' 

    В дополнение к вашему вопросу учтите, что .rar не только соответствует «.rar», но соответствует каждому отдельному символу (в том числе . ) Перед rar . В этом случае, вероятно, не проблема, но . должен быть экранирован в регулярных выражениях.

     ls -R | grep "\.rar$" 

    Вы также можете grep искать строку, начинающуюся с границы слова. A. является одной из таких границ.

     $ ls -R | grep '\brar$' 

    пример

    Скажем, у меня есть данные этого образца.

     $ ls -1 afile.rar xrar UFAIZLV2R7.part1.rar.part UFAIZLV2R7.part2.rar.part 

    Эта команда найдет только файл с расширением .rar .

     $ ls -R | grep '\brar$' afile.rar 

    Как это работает?

    Метасимвол \b является якорем, похожим на символ каретки и доллара. Он соответствует позиции, которая называется «границей слов». Это совпадение равно нулю.

    Ситуации, когда это не сработает

    Если у вас есть файлы с именем blah-rar они также будут обнаружены.

     $ ls -R | grep '\brar$' afile-rar afile.rar 

    Это потому, что персонажи, отличные от буквенно-цифровых символов, обычно считаются граничными символами, и поэтому проскальзывают мимо этого подхода.

    Просто делать :

     ls -1R -I"?" -I"??" -I"???" -I"*[!.][!r][!a][!r]" 

    Вам вообще не нужен grep .

    ПРИМЕЧАНИЕ . Вышеупомянутое работает … кроме того, что он по-прежнему получает как минимум afile-rar и я не понимаю, почему. Я оставлю его здесь, но я не горжусь этим. В любом случае, как говорили другие:

     find . '*.rar' 
    Interesting Posts

    Почему у дистрибутивов нет уникальной версии, которая постоянно предоставляет обновления?

    Отслеживать доступ к HDD?

    Как просмотреть rss-канал для новых записей из сценария bash?

    Как восстановить папки в исходное место назначения с использованием двуличия?

    Разрешение только для записи для каталога не позволяет переименовывать (перемещать) файлы внутри?

    Как удалить все строки в файле с помощью vi?

    Как подключиться к фотоаппарату Sony через Wi-Fi от Linux

    Как я могу использовать команду идентификации imagemagick в скрипте, чтобы определить, является ли файл JPEG недопустимым или поврежденным?

    Почему journalctl говорит «- нет записей -»?

    Как мне перебрать вывод из shuf?

    Невозможно установить gcc на CentOs 6.6

    Linux, SVN и Dropbox. В какой каталог должен храниться мой репозиторий svn?

    редактирование очень длинной строки, много столбцов в vim

    как устранить неполадки в имени домена перед повторным указателем Nameservers

    Bacula: задание резервного копирования заданного диска не возобновляется при перезагрузке диска

    Linux и Unix - лучшая ОС в мире.