Como posso executar “tail -f” em todos os arquivos de log no diretório atual - exceto por um?

3

Como parte de minhas tarefas diárias de desenvolvimento (em um Mac executando o OS 10.12.3), corro tail -f * na minha pasta de log do Terminal. A pasta contém cerca de 15 arquivos diferentes. Como eu posso alterar este comando para monitorar alterações em todos os arquivos, exceto um de * ? Suponha que o único arquivo que eu gostaria de excluir de * seja chamado de Repetitive.log .

Desculpas pela pergunta básica, eu olhei em volta e não vi uma cópia. Lançado de link

    
por pgblu 21.03.2017 / 21:32

2 respostas

2

Se você estiver usando bash como seu shell, defina a variável de ambiente GLOBIGNORE como uma lista de padrões separada por dois-pontos que você deseja que não corresponda quando o shell estiver globbing, por exemplo

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

De 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.
    
por 21.03.2017 / 22:14
1

xargs é seu amigo! Se não, find também pode ajudar.

Aqui estão quatro abordagens, usando xargs , find ... -exec ou correspondência estendida de padrões:

Use xargs via ls e grep

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

Use xargs via find

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

Use find com -exec argumento

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

Use correspondência estendida de padrões em bash

Boa resposta, tirada do link .

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

Nota

Para essa tarefa, eu preferiria a xargs way, pois ela fornece a saída de tail marcada com os respectivos nomes de arquivo. Usar ls e grep parece mais intuitivo e fácil de lembrar.

    
por 21.03.2017 / 23:27