![](https://seccdn.libravatar.org/avatar/363424a7062b0e7a90527600f3760d46.jpg?s=120&d=mm&r=g)
Hallo, Am Die, 01 Aug 2006, Achim Schäfer schrieb:
ich habe auch noch einen Vorschlag. Das ganze kannst Du auch direkt mit find erledigen. Das kann durchaus mit logischen Operatoren arbeiten. (Siehe 'man find'.)
Du könntest also so etwas schreiben (ungetestet):
find /test ! -name "*Exclude1*" ! -name "*Exclude2*" -mtime +30 -type f
Die '!' muss man quoten oder escapen. => History expansion. find /test -type f -mtime +30 -not -name '*foo*' -not -name '*bar*'
und dann muss dahinter zum Löschen natürlich noch ein: -exec rm -fr {} \; oder besser noch: -print0 | xargs -0 rm -fr
Das '-r' ist glaube ich nicht gewollt. -print0 | xargs -r -0 rm -f Der Vollstaendigkeit halber: die anderen "Loesungen" mit sed sind allesamt anfaellig bist falsch. Uebrigens kann man mit Perl Schwierigkeiten auch umgehen. Mit 'find2perl' gibt's sogar Hilfe ;) Gleich angepasst und um die Excludes ergaenzt: ==== #!/usr/bin/perl -w use strict; use File::Find; sub wanted { -f _ ### -type f && (int(-M _) > 30) ## -mtime +30 && ! m/EXCLUDE_REGEX_ONE/ && ! m/EXCLUDE_REGEX_TWO/ && unlink($File::find::name); ### rm -f } # Traverse desired filesystems File::Find::find({wanted => \&wanted}, '.'); exit(0); ==== -dnh --
Womit erstellt ihr so eure Homepages? mit vim *g*. Wobei es Leute gibt, die tatsächlich behaupten, das soll auch mit diesem Betriebssystem - wie heißt es doch gleich - *äh* Emacs gehen. [> Bernd Stäglich und Philipp Zacharias in suse-linux]