
Como parte de mis tareas diarias de desarrollo (en una Mac con OS 10.12.3), ejecuto tail -f *
en mi carpeta de registro desde Terminal. La carpeta contiene alrededor de 15 archivos diferentes. ¿Cómo puedo modificar este comando para monitorear los cambios entodos los archivos menos unode *
? Supongamos que el único archivo que me gustaría excluir *
se llama Repetitive.log
.
Disculpas por la pregunta muy básica, la busqué y no vi un duplicado. Publicado desdehttps://stackoverflow.com/questions/42815599/exclude-files-from-the-catchall-symbol
Respuesta1
Si está utilizando bash
como shell, establezca la variable de entorno GLOBIGNORE
en una lista de patrones separados por dos puntos que deseanocoincide cuando el caparazón está globulando,p.ej
$ 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.
Respuesta2
xargs
¡es tu amigo! Si no, find
también puede ayudar.
Aquí hay cuatro enfoques, usando xargs
o find ... -exec
coincidencia de patrones extendida:
Usar xargs
vía ls
ygrep
ls | grep -v Repetitive.log | xargs tail -f
Usar xargs
a través defind
find . -maxdepth 1 ! -name Repetitive.log | xargs tail -f
Usar find
con -exec
argumento
find . -maxdepth 1 ! -name Repetitive.log -exec tail -f {} \;
Utilice la coincidencia de patrones extendida enbash
Gran respuesta, tomada dehttps://stackoverflow.com/a/19429723/1862762.
shopt -s extglob
tail -f /directory/of/logfiles/!(Repetitive.log)
Nota
Para esta tarea, preferiría esta xargs
forma, ya que proporciona resultados tail
etiquetados con los nombres de archivos respectivos. Usar ls
y grep
parece más intuitivo y fácil de recordar.