PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Deiteiendungen automatisch löschen lassen



Papaschlumpf
08.05.03, 10:52
Hallo, ich habe da mal eine Frage, wie kann ich es machen, das ich bestimmte Dateiendungen, nach einer gewissen Zeit löschen lassen kann...
Wie zb. avi Dateien.... alle 3 Tage.


Das ich soetwas mit einem Crone machen kann ist schon klar.... aber wie muss die Auszuführende Datei asussehen.
Der Gesammte Ordner darf allerdings nihct gelöscht werden. Nur die einzelnen Dateien.




MfG


Papas

marcdevil
08.05.03, 10:56
find /home/ftp -type f -name "*.[Aa][Vv][Ii]" -exec rm {} \;

Papaschlumpf
08.05.03, 11:14
Also wenn ich das richtig verstanden habe, dann einfach
/home/ftp

da meinen Pfad zu dem Ordner eingeben
"*.[Aa][Vv][Ii]"
das sind die endungen


find
das muss auch da rein.... als suchbefehl ?


Und das ganze mache in in eien Datei rein loeschen.pl
und lasse sie durch den Crone ausführen ???


und dann werden alle Dateien gelöscht, die din der Klammer drinnen sind


MfG
papas

lausl
08.05.03, 11:27
loeschen.sh ist eventuell hübscher als loeschen.pl, aber sonst hast Du das wohl richtig verstanden

Papaschlumpf
08.05.03, 11:41
Werden dann auch unterordner mit durchsucht, oder nur der ordner den ich angegeben habe.... wie zb:


find /home/user -type f -name "*.[Aa][Vv][Ii]" -exec rm {} \;
da habe ich dann noch einige unterordner drinnen, und da halt dann die Daten durchsuchen

angenommen da ist der ordner papaschlumpf drinnen, wird dieser dann auch durchsucht oder der nicht ?


MfG



papas

marcdevil
08.05.03, 11:57
Original geschrieben von Papaschlumpf
Werden dann auch unterordner mit durchsucht, oder nur der ordner den ich angegeben habe.... wie zb:


find /home/user -type f -name "*.[Aa][Vv][Ii]" -exec rm {} \;
da habe ich dann noch einige unterordner drinnen, und da halt dann die Daten durchsuchen

angenommen da ist der ordner papaschlumpf drinnen, wird dieser dann auch durchsucht oder der nicht ?

ja, unterordner werden natürlich auch durchsucht, sonst würde ja ein


rm /home/user/*.[Aa][Vv][Ii]

ausreichen.

das mit dem *.[Aa][Vv][Ii] steht für *.Avi *.AVI *.avi *.aVi...... du weißt schon was ich meine, gell?
der gesamte findbefehl kommt in /etc/cron.weekly/avirm.sh
das script muss dann noch ausführbar gemacht werden:
chmod 755 /etc/cron.weekly/avirm.sh

Papaschlumpf
08.05.03, 13:52
Wie ist das denn wenn die Datei nihct da ist, stoppt das Script dann oder läuft das weister ohne Probleme .....



MfG



Papas

marcdevil
08.05.03, 14:09
das ist kein script, find sucht einfach alle , die den kriterien entsprechen , probiere doch selber mal


find ~ -name "*.mp3"


wenn du mehr über find wissen willst :
man find

Papaschlumpf
08.05.03, 14:39
Habe das ja nun auch alles gemacht, nu ich bekomme einen Fehler


find /home/user -type f -name "*.[Aa][Vv][Ii]" -exec rm {} \;


das habe ich da drinnen ( namen natürlich angepasst AaVv Ii etc.



nun bekomme ich einen Fehler mit der -exec dfa soll was nicht stimmen



weis jemand Rath




Genaue Meldung
Ausgabe des Befehls /sicherung/loeschen.sh ...

find: missing argument to `-exec'



die rechte sind auch auf 755 eingestellt




MfG



Papas

Der Gestreifte
08.05.03, 15:34
Den Backslash hast Du vor dem Semikolon stehen?
Du könntest auch mal -exec rm \{\} \; probieren.

Papaschlumpf
09.05.03, 09:50
Immerhin bekomme ich nun schon mal eine andere meldung:

Ausgabe des Befehls /sicherung/loeschen.sh ...

find: paths must precede expression
Usage: find [path...] [expression]


soweit ich das verstehe, erkennt er schon den Pfad... jedoch nihct die einzelnen dateien. ich hänge mal die loeschen.sh von mir mit an ich hoffe das hilft dann weiter

MfG


Papas

marcdevil
09.05.03, 10:20
find /usr/local/httpd/htdocs/user -type f -name "*.[eE][xX][eE]" -o name "*.avi" -o name "*.rar" -exec rm {} \;


alles in [] steht für ein Zeichen !!!
also
[ABC] = A -> richtig
[ABC] = B -> richtig
[ABC] = C -> richtig
[ABC] = b -> falsch
...

[AB][ab] = Aa -> richtig
[AB][ab] = Ab -> richtig
[AB][ab] = Ba -> richtig
[AB][ab] = BB -> falsch
...

marcdevil
09.05.03, 10:26
wenn man als User dahintergestiegen ist wird man bei dir Avi's als Film-avi.irgendwas abspeichern, dann hilft nur noch
file Film-avi.irgendwas
das gibt dir den echten Dateityp an.
Dann gehts aber in Richtung Shellprogrammierung, mit "if" abfrage !

Papaschlumpf
09.05.03, 10:32
Bekomme immer noch die meldung, das es in dem verzeichniss bla bla


kannst muir mal deine andere version erklären mit dem IF ....

ev geht das dann ja auch....


wie man sicher schon mitbekommen hat.... habe ich free space und das ist daher wichtig da DL´s nicht erlaubt sind...




MfG


Papas

P.s.: Der Ordner user hat nur die rechte 0017 kann es daran liegen.... diese kann ich aber auch nicht erweitern.. da dann wieder das schreiben in dem Ordner möglich ist.

marcdevil
09.05.03, 11:12
dein find befehl war ja auch falsch, hast du es mal mit -name "*.rar" -o -name "*.avi" probiert ?

0017 heisst d-----xrwx ?, das wäre dumm, da ja jeder dann schreiben darf. (duuugggaaa - Dir-User-Gruppe-Alle)

als beispiel für bz2 Dateien:


#!/bin/bash
if [[ `file -b "$1"`=="bzip2 compressed data, block size = 900k" ]] ; then
rm "$1"
fi

aber ohne find gehts nicht.

Papaschlumpf
09.05.03, 11:29
Habe nun immer noch die meldung
Ausgabe des Befehls /sicherung/loeschen.sh ...

find: paths must precede expression
Usage: find [path...] [expression]




und habe in der loeschen.sh nun das drinnen


find /usr/local/httpd/htdocs/user -type f -name "*.exe" -o -name "*.avi" {} \;

marcdevil
09.05.03, 11:49
-exec rm
fehlt noch, sorry war mein Fehler, aber ich dachte das Prinzip bei find hättest du schon verstanden.

find /usr/local/httpd/htdocs/user -type f -name "*.exe" -o -name "*.avi"
zeigt alle exe und avi dateien

find /usr/local/httpd/htdocs/user -type f -name "*.exe" -o -name "*.avi" -exec rm {} \;
löscht alle exe und avi dateien

das {} \; am ende ist nur wenn du mit -exec irgendwas ausführen willst.

Papaschlumpf
09.05.03, 11:57
Also,
ich habe nun zwei dateien angelegt einmal suchen und einmal löschen
in der löschen ist das drinnen:
find /usr/local/httpd/htdocs/user -type f -name "*.exe" -o -name "*.avi" -exec rm {} \;


hier bekomme ich aber keine dateien mit gelöscht. es wird nur gezeigt:


es kann keine Ausgabe erstellt werden.


Im gegensatz zu finden
da werden mir die Dateien angezeigt.

marcdevil
09.05.03, 12:07
which rm --> ist rm das rm, was du möchtest (/bin/rm oder /usr/local/bin/rm)
ls -lad /usr/local/httpd/htdocs/user --> Rechte checken, nur wer in dem Verzeichniss schreiben darf, darf auch löschen.

Papaschlumpf
09.05.03, 12:12
Schon klar....
und wie kann ich das ändern ???
Gar nicht oder doch

P.s.:
Gibt es auch die möglichkeit dann eine mal zu senden, wenn das finden erfolgreich war ???? Automatisch meine ich

marcdevil
09.05.03, 12:54
Original geschrieben von Papaschlumpf
Schon klar....
und wie kann ich das ändern ???
Gar nicht oder doch

das mit rm ?
klar kann man das festlegen
-exec /bin/rm {} \;



P.s.:
Gibt es auch die möglichkeit dann eine mal zu senden, wenn das finden erfolgreich war ???? Automatisch meine ich

find /usr/local/httpd/htdocs/user -type f -name "*.exe" -o -name "*.avi" | mail -s "Boese Dateien gefunden" root@server.net