3

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

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

2 ответа2

2

Если вы используете 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.
1

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 кажется более интуитивным и легко запоминающимся.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .