Rinominare e concatenare file di log

I log sono tipicamente dei file di testo facilmente ispezionabili con le più comuni applicazioni di text editing. Se per qualche insolito motivo vi capita di dover dare in pasto i file di log ad una applicazione che accetta solo file con una determinata estensione (ad esempio .log o .txt) e non volete perdere tempo con le espressioni regolari di rename potete utilizzare il comando mv all’interno di un banale ciclo for.

Supponiamo di dover rinominare i seguenti file di log con estensione .txt:

file.log.090714
file.log.090715
file.log.090716

$ for i in `ls file.log.*`; do mv $i $i.txt; done

Il risultato sarà il seguente:

file.log.090714.txt
file.log.090715.txt
file.log.090716.txt

Se volessimo concatenare tutti i file con estensione .txt possiamo ricorrere al classico comando cat.

$ cat *.txt > newfile

Se invece prima di concatenarli volessimo aggiungere un delimitatore alla fine di ogni singolo file (o una riga vuota) per trattamenti futuri o semplicemente per capire ad occhio quando un file finisce e comincia l’altro possiamo usare la seguente riga di comando:

$ for i in `ls file.log.*`; do echo "" >> $i; done

In questo caso il delimitatore è una riga vuota aggiunta alla fine di tutti i file il cui nome comincia con file.log

code , . URL.

2 Responses to Rinominare e concatenare file di log

  1. TankMiche says:

    L'esecuzione di ls è inutile, in effetti.Per il secondo esempio, infatti,for i in file.log.*; do … ; donefunziona allo stesso modo, grazie all'espansione di bash.Ed entrambi i metodi soffrono di problemi con filename con spazi all'interno: per quelli servirebbe unls file.log.* | { while read i; do echo "$i"; done; }capace di matchare i file "file.log.a" e "file.log spazio"

  2. Utile, grazie per le info (anche a TankMiche).

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>