Захват файлов журнала, которые заканчиваются любым числом - PullRequest
0 голосов
/ 29 августа 2018

Мы хотим захватить все журналы, которые заканчиваются на ".log. [Any number]

Итак, я создаю этот синтаксис

find .  -type f  -regex '\.log\.*[0-9]$' -print

command does not give any output 

Но это не захватывает файлы следующим образом (ожидаемые результаты)

  controller.log.2018-01-03-01  
  server.log.2017-10-31-03
  server.log.2018-01-23-11
  server.log.2018-04-06-17  
  server.log.2018-07-07-05
  controller.log.2018-01-03-02  
  log-cleaner.log.10           
  server.log.2017-10-31-04 
  server.log.2018-01-23-12  
  server.log.2018-04-06-18 
  server.log.2018-07-07-06
  controller.log.2018-01-03-03 
  log-cleaner.log.2   
  server.log.232.434

что не так с моим синтаксисом?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

С find manpage:

-regex pattern

Имя файла соответствует шаблону регулярного выражения. Это совпадение на всем пути, а не поиск. Например, чтобы сопоставить файл с именем ./fubar3, вы можете использовать регулярное выражение .*bar. или .*b.*3, но не f.*r3. Регулярные выражения, понимаемые при поиске, по умолчанию являются регулярными выражениями Emacs, но это можно изменить с помощью опции -regextype.

Итак, вы должны соответствовать всему пути, в этом случае вы можете попробовать:

find .  -type f  -regex '.*\.log.*[0-9]$' -print
0 голосов
/ 29 августа 2018

Не могли бы вы попробовать следующее (учитывая, что ваши файлы имеют тот же формат, что и показанные образцы)

find . -regextype posix-extended -regex ".*\.log.[0-9]{4}(-[0-9]{2}){3}"
...