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!