Leere und ältere Dateien filtern und löschen

06/06/2010 - 10:58 von Thomas Wiedmann | Report spam
Hallo,

mit welchem Befehl kann man in der bash Dateien,
a) die àlter als ein bestimmtes Datum sind (möglichst ohne daß man sich
zuvor die Tage von heute zurückrechnen muß),
a1) anzeigen?
a2) löschen?
b) die leer sind, löschen?
c) die beide der o. g. Kriterien a) und b) erfüllen, löschen?

Thomas Wiedmann
 

Lesen sie die antworten

#1 JP Bruns
06/06/2010 - 11:35 | Warnen spam
Thomas Wiedmann [2010-06-06]:
Hallo,

mit welchem Befehl kann man in der bash Dateien,
a) die àlter als ein bestimmtes Datum sind (möglichst ohne daß man sich
zuvor die Tage von heute zurückrechnen muß),
a1) anzeigen?
a2) löschen?
b) die leer sind, löschen?
c) die beide der o. g. Kriterien a) und b) erfüllen, löschen?



Das wàre dann wohl 'find', wobei ich mir mit der Angabe eines Datums
nicht sicher bin, habe ich noch nie benutzt. Laut manpage könnte dir
aber die Option 'newerXY' helfen, die wohl negiert werden muss.

'find' akzeptiert aber auf jedenfall die Angabe von z.B. +/- X-Tagen.
Die manpage sollte dir über die Möglichkeiten von atime, ctime, mtime
_der_ Anlaufpunkt sein.

Wenn es schnell gehen soll könnte das schon reichen (die Optionen sind
in der manpage gut erklàrt):

c1)
find -type f -empty -ctime +$VOR_SOVIEL_TAGEN_GEAENDERT -exec ls -al \
{} \;

bzw. mittels 'xargs' (effizienter bei vielen Dateien und um "argument
list too long" zu vermeiden):

c1)
find -type f -empty -ctime +$VOR_SOVIEL_TAGEN_GEAENDERT -print0 | \
xargs -0 ls -al

bzw. zum Löschen

c2)
find -type f -empty -ctime +$VOR_HUNDERT_TAGEN -exec rm {} \;

c2)
find -type f -empty -ctime +$VOR_HUNDERT_TAGEN -print0 | xargs -0 rm


JP

Ähnliche fragen