2016-11-24 2 views
-2

Ich bin ein bisschen neu in der Bash-Scripting und habe ein Szenario, auf dem ich den effizienten Weg zum Abschluss wissen muss. Ich muss die Größe aller Dateien in einem Verzeichnis überprüfen und wenn die Größe von Dateien eine bestimmte Grenze überschreitet, muss ich diese Dateien leeren und dann eine E-Mail an eine Mail-ID mit Details wie Name der Dateien, die geleert werden Originalgröße, die aktuelle Größe nach dem Entleeren. Gefunden viele Blog zum selben Thema, aber wollte nur die effizienteste Möglichkeit überprüfen, ich kann das obige Szenario abschließen.Wie überprüfe ich die Größe aller Dateien in einem Verzeichnis und leere es, wenn es eine bestimmte Größe überschreitet

Dank

+0

Meinst du [logrotate] (http://www.linuxcommand.org/man_pages/logrotate8.html)? –

+0

@CostiCiudatu Nein Ich habe kein Logrotate-Szenario. Ich muss nur die Dateien leeren. Für diese Dateien ist kein Backup erforderlich. Nach dem Leeren der Dateien muss ich die E-Mails basierend auf der oben genannten Bedingung senden. – Sam

+0

** rotate ** * count * - 'Wenn count 0 ist, werden alte Versionen entfernt und nicht rotiert. ** ** mail ** * address * -' Wenn ein Protokoll außer Betrieb gesetzt wird, ist es das mailed to address. ** Größe ** * Größe * - 'Log-Dateien werden gedreht, wenn sie größer werden als Größe Bytes. Überprüfen Sie auch ** create **/** copytruncate **. –

Antwort

0

War in der Lage komplette das oben beschriebene Szenario mit Hilfe von Befehl finden.

rm -f logFile* 
find . -type f -size +20k -exec du -sh {} \; >> logFile.txt 
cat logFile* 
find . -type f -size +20k -exec truncate -s 0 {} \; 
Verwandte Themen