Ho un programma che registra l'output in un file * .out durante l'esecuzione. Ho creato uno script bash per eseguire diverse volte, quindi ogni esecuzione scrive su un diverso file * .out. Ho scoperto che potevo tail
il più recente file di .out * in questo modo:Coda il file più recente
watch tail $(ls -tr *.out | tail -n1)
Il problema sembra essere che il riferimento $()
sola Viene eseguito una volta. Quindi, al termine della prima esecuzione, watch
continua allo tail
lo stesso file * .out, anche se ora c'è un nuovo file * .out.
Come posso modificarlo per passare al prossimo file * .out al termine di una corsa?
Ho provato a fare un po 'di annidamento di virgolette e parentesi, ma non capisco i dettagli del riferimento. Le cose sono complicate dal fatto che il watch
passa il suo comando a sh
, anche se sto usando bash.
Punti bonus: sarebbe bello se questo potesse essere modificato a tail -f
invece di ripetere semplicemente watch
ogni n
secondi.
hm..In realtà non capisco il caso d'uso. Vuoi leggere qualche file in tempo reale? se sì, è più facile usare 'tail -f * .out' – pivanchy
Sono generalmente d'accordo con @pivanchy, anche se vale la pena ricordare che POSIX' tail' non è garantito per gestire più di un file alla volta. – kojiro
@pivanchy questa è la soluzione. Non avevo realizzato che fosse così semplice. –