
Como parte de minhas tarefas diárias de desenvolvimento (em um Mac executando o OS 10.12.3), executo tail -f *
minha pasta de log no Terminal. A pasta contém cerca de 15 arquivos diferentes. Como posso alterar este comando para monitorar alterações emtodos os arquivos menos umde *
? Suponha que o único arquivo do qual gostaria de excluir *
seja chamado Repetitive.log
.
Desculpas pela pergunta básica, procurei por ela e não vi uma duplicata. Repostado dehttps://stackoverflow.com/questions/42815599/exclude-files-from-the-catchall-symbol
Responder1
Se você estiver usando bash
como shell, defina a variável de ambiente GLOBIGNORE
como uma lista de padrões separados por dois pontos que você desejanãocombinar quando o shell está 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.
Responder2
xargs
é seu amigo! Se não, find
também pode ajudar.
Aqui estão quatro abordagens, usando xargs
ou find ... -exec
correspondência de padrões estendida:
Use xargs
via ls
egrep
ls | grep -v Repetitive.log | xargs tail -f
Usar xargs
atravésfind
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 de padrões estendida embash
Ótima resposta, tirada dehttps://stackoverflow.com/a/19429723/1862762.
shopt -s extglob
tail -f /directory/of/logfiles/!(Repetitive.log)
Observação
Para esta tarefa, eu preferiria o xargs
caminho, pois fornece saída tail
marcada com os respectivos nomes de arquivo. Usar ls
e grep
parece mais intuitivo e fácil de lembrar.