Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

02.01.2007, 11:02

löschen von bestimmten files

Hi

Möchte mir ein script schreiben welches mir alle dateien in einem Verzeichnis löscht deren Modifikationsdatum älter als x Tage ist.

weis nur das man mit find . -mtime +3 alle files auflistet deren Mod. Datum älter als 3 Tage ist.
Aber wie packe ich das in ein script das mir dann alle aufgelisteten files löscht???

Bin dankbar für jede hilfe.

mfg

2

02.01.2007, 11:21

find . -mtime +3 | xargs [kommando, z.b. rm]
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

3

02.01.2007, 11:22

RE: löschen von bestimmten files

Zitat

Original von billy_talent
weis nur das man mit find . -mtime +3 alle files auflistet deren Mod. Datum älter als 3 Tage ist.
Aber wie packe ich das in ein script das mir dann alle aufgelisteten files löscht???


dafür gibt es zwei möglichkeiten.
1. du benutzt die option -exec (siehe man find). mit dieser option kann ein kommando ausgeführt werden, der dateiname wird mit {} in das kommando eingefügt. das kommando wird mit einem semikolon abgeschlossen, dass gequotet werden muss. das ganze sieht dann so aus

Quellcode

1
find . -mtime +3 -exec rm {} \;

das funktioniert solange gut, wie du nicht ein paar hundert oder tausende von filöes löschen willst, da exec für jede datei ein eigenes rm startet.

2. du benutzt die kopplung verschiedener kommandos durch eine pipe. diese wird durch den senkrechnten strich | erzeugt und ist im prinzip eine rohrverbindung (pipe) vom ausgang des einen kommandos zum eingang des anderen kommandos. damit kannst du die ausgabe von find an ein anderes kommando übergeben. mit dem kommando xargs wird das ganze in sinnvolle häppchen geteilt, die das system verkraften kann. das ganze sieht dann so aus

Quellcode

1
find . -mtime +3 | xargs rm


und zum schluss machst du noch ein script daraus. als dateipfad solltest du den wirklichen pfad eintragen und nicht einfach nur den punkt.
also datei öffnen und dann eintragen

Quellcode

1
2
#!/bin/bash
find /pfad/da/hin/ -mtime +3 -type f | xargs rm

ausführungsrecht auf die datei setzen und schon kannst los gehen.

epikur was faster!
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

4

02.01.2007, 11:52

thanx at epikur and linuxerr

Thema bewerten