Pulire la registrazione con BASH


1

Ho uno script che cancella i file 7 giorni o più vecchi e poi li registra in una cartella. Registra ed elimina tutto correttamente ma quando apro il file di registro per la visualizzazione, è molto sciatto.

log=$HOME/Deleted/$(date) 
find $HOME/OldLogFiles/ -type f -mtime +7 -delete -print > "$log"

Il file di registro è difficile da leggere

Esempio di output di file: (quando aperto nel blocco note)

/home/u0146121/OldLogFiles/file1.txt/home/u0146121/OldLogFiles/file2.txt/home/u0146121/OldLogFiles/file3.txt

È comunque necessario registrare il file più bello e più pulito? Forse con il nome del file, la data cancellata e quanti anni aveva?

Qualsiasi suggerimento aiuto!

Risposte:


2

Certo, prova più istruzioni exec come:

find $HOME/OldLogFiles/ -type f -mtime +7 -exec ls -latr "{}" \; -exec echo was deleted on `date` \; -exec rm -f "{}" \;|paste - - >> "$log"

+1 per paste trucco
mpy

log = $ HOME / Deleted / $ (date) trova $ HOME / OldLogFiles / -type f -mtime -7 -exec ls -latr {} \; - exec echo è stato cancellato date \; -exec rm -f "{}" \; | paste - - & gt; & gt; $ log che sembra corretto ma continuo a ricevere questo errore e non so perché ./test.sh: riga 3: $ log: ricerca di redirect ambiguo: 'ls' terminato dal segnale 13 find: 'ls' terminato dal segnale 13
mkrouse

1
@MattKrouse: la variabile log contiene spazi bianchi (come è derivato da date: Fr Jun 28 16:49:19 CEST 2013 ), quindi il reindirizzamento >> $log dovresti leggere >> "$log" come nella tua domanda. E probabilmente vuoi includere anche il parametro ls {} tra virgolette, come nel rm dichiarazione: ... -exec ls -latr "{}" ...
mpy

1
Se si desidera la data di modifica da ls -l, è possibile reindirizzarla tramite awk {print $ 6 "-" $ 7 "-" $ 8} "oppure utilizzare stat -c% y & lt; nomefile & gt;
Gregg Leventhal

1
Il -a opzione di ls non ha significato se applicato agli argomenti del file. ( ls –l .bashrc funziona bene; non hai bisogno di dire ls –la.) E il -t e -r le opzioni sono significative solo quando si hanno più argomenti o uno (o più) argomenti della directory. Quindi, dal momento che stai dicendo -type f, si potrebbe anche dire semplicemente -exec ls -l {}.
Scott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.