Как запустить «tail -f» для всех файлов журналов в текущем каталоге, кроме одного?

Как запустить «tail -f» для всех файлов журналов в текущем каталоге, кроме одного?

В рамках моих ежедневных задач разработки (на Mac с ОС 10.12.3) я запускаю tail -f *папку журнала из Терминала. Папка содержит около 15 различных файлов. Как мне изменить эту команду, чтобы отслеживать изменения ввсе файлы кроме одногоПредположим, что *единственный файл, который я хотел бы исключить, *называется Repetitive.log.

Извините за очень простой вопрос, я поискал его и не увидел дубликата. Переопубликовано изhttps://stackoverflow.com/questions/42815599/exclude-files-from-the-catchall-symbol

решение1

Если вы используете bashв качестве оболочки, установите переменную окружения GLOBIGNOREна список шаблонов, разделенных двоеточиями, которые вы хотитенетсовпадение, когда оболочка подставляется,например

$ export GLOBIGNORE=Repetitive.log
$ export GLOBIGNORE=somefile:anotherfile:abc*

От man bash:

   GLOBIGNORE
          A colon-separated list of  patterns  defining  the  set  of
          filenames  to be ignored by pathname expansion.  If a file-
          name matched by a pathname expansion pattern  also  matches
          one  of  the patterns in GLOBIGNORE, it is removed from the
          list of matches.

решение2

xargsтвой друг! Если нет, findтоже может помочь.

Вот четыре подхода, использующих xargsрасширенное find ... -execсопоставление с образцом:

Используйте xargsчерез lsиgrep

ls | grep -v Repetitive.log | xargs tail -f

Использовать xargsчерезfind

find . -maxdepth 1 ! -name Repetitive.log | xargs tail -f

Использовать findс -execаргументом

find . -maxdepth 1 ! -name Repetitive.log -exec tail -f {} \;

Использовать расширенное сопоставление с образцом вbash

Отличный ответ, взятый изhttps://stackoverflow.com/a/19429723/1862762.

shopt -s extglob
tail -f /directory/of/logfiles/!(Repetitive.log)

Примечание

Для этой задачи я бы предпочел способ xargs, так как он обеспечивает вывод из tailпомеченных соответствующими именами файлов. Использование lsи grepкажется более интуитивным и легким для запоминания.

Связанный контент