Neuste Datei in einem Ordner löschen?

Bash, Shell, PHP, Python, Perl, CGI
kikman
Posts: 14
Joined: 2002-12-18 09:32

Neuste Datei in einem Ordner löschen?

Post by kikman »

Hi,

Ich kopiere mir via Perl-Script/cron Log-Dateien in einen Ordner. Da das letzte Log beim kopieren noch nicht komplett ist, möchte ich es gern vor dem nächsten "Copy-Cron" löschen. Das Perl-Script kopiert nämlich nur noch nicht existierende Log Dateien. Delshalb würde ich gern das zuletzt kopierte Log auch via cron wieder löschen. Ist es irgendwie möglich, mit einem Script, die zuletzt kopiere Log-Datei zu löschen?

Gruß
Kikman
johny
Posts: 23
Joined: 2002-11-08 15:31
Location: Tornuet

Re: Neuste Datei in einem Ordner löschen?

Post by johny »

rm log_yyyymmdd.log
wieso kopierst du die log datei nicht eben aktuell?
kikman
Posts: 14
Joined: 2002-12-18 09:32

Re: Neuste Datei in einem Ordner löschen?

Post by kikman »

Hi,

Ich bekomm die Logs von einem Counter-Strike Server, und erstelle damit stündlich Statistiken. Deshab möchte ich das via cron automatisieren.

Kikman
drsnuggles
Posts: 9
Joined: 2002-11-04 20:52

Re: Neuste Datei in einem Ordner löschen?

Post by drsnuggles »

warum nimmste nich rsync? :)
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Neuste Datei in einem Ordner löschen?

Post by dea »

man find
drsnuggles
Posts: 9
Joined: 2002-11-04 20:52

Re: Neuste Datei in einem Ordner löschen?

Post by drsnuggles »

biste sicher,dass man in dem fall mit find was reissen kann? hab da so meine zweifel ;)
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Neuste Datei in einem Ordner löschen?

Post by dea »

Code: Select all

find /pfad/zum/verzeichnis -type f -atime +1 -exec rm -f {} ;
atime ist der Schlüssel zum Erfolg ...
kikman
Posts: 14
Joined: 2002-12-18 09:32

Re: Neuste Datei in einem Ordner löschen?

Post by kikman »

ich nochmal :roll:

Also mit find, hab ich da auch nicht auf die Reihe bekommen :oops:

Kann man da evtl. nach dem Dateinamen gehen?

Die Log-Dateien heißen:

L070413.log, L070414.log, L070415.log, L070416.log, ............

Kann man da irgendwas machen, das immer die Logdatei gelöscht wird, die die größte Zahl im Dateinamen hat?

Jetzt wirds kompliziert, oder?? :?

Gruß
Kikman
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Neuste Datei in einem Ordner löschen?

Post by dea »

Code: Select all

nummer=$(ls L[0-9]*.log|cut -c "2-"| cut -f"1" -d"."|sort); rm L${nummer}.log
... my way (ungetestet)
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Neuste Datei in einem Ordner löschen?

Post by olaf.dietsche »

Kikman wrote:Kann man da evtl. nach dem Dateinamen gehen?

Die Log-Dateien heißen:

L070413.log, L070414.log, L070415.log, L070416.log, ............

Kann man da irgendwas machen, das immer die Logdatei gelöscht wird, die die größte Zahl im Dateinamen hat?

Code: Select all

rm `ls L*.log | tail -1`
drsnuggles
Posts: 9
Joined: 2002-11-04 20:52

Re: Neuste Datei in einem Ordner löschen?

Post by drsnuggles »

Code: Select all

find /pfad/zum/verzeichnis -type f -atime +1 -exec rm -f {} ;
das besser nich ausprobieren,sonst sind die logs weg :(
er will ja lediglich das letzte loeschen und nicht all die, die (wie in diesem codebeispiel) laenger als 24 stunden nicht benutzt wurden.

Code: Select all

file=$(ls -t L*.log 2>/dev/null |head -n1) && rm -f $file
das sollte funzen. ls sortiert selber nach der letzten aenderungszeit und wenn ls keinen fehler liefert wird das file geloescht
kikman
Posts: 14
Joined: 2002-12-18 09:32

Re: Neuste Datei in einem Ordner löschen?

Post by kikman »

:-D :-D :-D

Vielen Dank!!!

Es funzt.....

Weiß garnicht wofür ich mich jetzt entscheiden soll :-D

Nochmals Danke!

Gruß
Kikman
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Neuste Datei in einem Ordner löschen?

Post by dea »

DrSnuggles wrote:

Code: Select all

find /pfad/zum/verzeichnis -type f -atime +1 -exec rm -f {} ;
das besser nich ausprobieren,sonst sind die logs weg :(
er will ja lediglich das letzte loeschen und nicht all die, die (wie in diesem codebeispiel) laenger als 24 stunden nicht benutzt wurden.

Code: Select all

file=$(ls -t L*.log 2>/dev/null |head -n1) && rm -f $file
das sollte funzen. ls sortiert selber nach der letzten aenderungszeit und wenn ls keinen fehler liefert wird das file geloescht
Selber noch kein 'man find' gemacht? Deine Variante geht nur nach der letzten Ã?nderung, nicht nach dem letzten Zugriff ...

zu find: Ob plus, ob minus ob garnichts entnimmt man am besten der lokalen Manpage - find unterscheidet sich nämlich sehr gerne zwischen den Distris/Derivaten (weshalb ich auch immer "ungetestet" dazuschreibe ;) )