¿El indicador de reintento del comando tail no funciona con comodines?

¿El indicador de reintento del comando tail no funciona con comodines?

Quiero seguir un montón de nombres de directorios desconocidos que contienen un archivo particular inexistente, por ejemplo:

tail -F /tmp/*/app.log

Sin embargo, eso no funciona según lo previsto con el comodín: si creo un archivo con esa ruta, tailno comenzará a seguirlo a menos que reinicie el comando. Por otro lado si ejecuto:

tail -F /tmp/example/app.log

Tan pronto como aparezca el archivo, el comando generará:tail: '/tmp/example/app.log' has appeared; following new file

He probado la -f filename --retrycombinación en lugar de -Fy el resultado es el mismo.

¿Cómo se puede solucionar esto? ¿Existen otras formas de lograr el mismo objetivo?

Respuesta1

/tmp/*/app.logserá expandido por el shell (BASH, supongo). Si existen coincidencias, esto se expandirá a esas coincidencias y luego se pasará como argumentos atail

$ find /tmp/test -type f
/tmp/test/a/app.log                                                                                                                                                                                                                                
/tmp/test/b/app.log                  

$ echo /tmp/test/*/app.log                                                                                                                                                                                        
/tmp/test/a/app.log /tmp/test/b/app.log

Así, en el caso anterior, tailse configuraría para seguir específicamente app.logen ay app.logen b. Si en el momento de su inicio app.logno bexistiera, no se seguiría. Si se crean nuevos directorios o archivos, tampoco los seguirá.

En caso de que no haya coincidencias, la cadena no expandida se pasará como argumento atail

$ echo /tmp/test/*/app2.log                                                                                                                                                                                     
/tmp/test/*/app2.log               

Por lo tanto, intentará seguir la ruta literal/nombre de archivo /tmp/test/*/app2.log, que probablemente nunca existirá (o si existe, se creó de una manera muy extraña porque tenerlo *como nombre de directorio no es algo que recomendaría hacer en circunstancias normales). .

información relacionada