Cronjob zum Löschen bestimmter Daten

Status
Für weitere Antworten geschlossen.

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Dann will ich Dir mal noch ein paar Ansätze mitgeben damit die Nacht nicht ganz so lang werden muß. ;)

Zum Filtern aller Dateien die nicht psd oder tiff sind folgende Bedingung verwenden.

-not -iname "*.psd" -and -not -iname "*.tiff"

Du weißt sicherlich schon wo das hin muß. Und noch ein kleiner Tipp, ohne zusätzlichen Parameter kann rmdir nur leere Verzeichnisse löschen.

Na dann, viel Erfolg
Frank
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Puuuh, so hart für einen Anfänger. Darf ich Dich fragen ob Du mir gegen Entgelt ein, zwei Skripts schreiben magst?! Ich sehe sonst die Nacht wieder wie im Flug vorüber gehen :)
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Puuuh, so hart für einen Anfänger. Darf ich Dich fragen ob Du mir gegen Entgelt ein, zwei Skripts schreiben magst?! Ich sehe sonst die Nacht wieder wie im Flug vorüber gehen :)

Sorry, ich bin hier aus Überzeugung das man Wissen teilen sollte. Nicht wegen dem Commerz und muß dich auch in sofern enttäuschen, das es jetzt für mich heißt Party :)

Ich bin mir aber sicher, wenn Du dein Problem klar umschreibst, das es hier eine ganze Menge Forenteilnehmer gibt die dir helfen können und wollen.

Gruß Frank
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Schon klar, und auch toll hier nichts aus Kommerz zu teilen! Nach stundenlangem hin und her bin ich aber leider nicht in der Lage das selbst zu schreiben bzw. zum Laufen zu bringen. Lernen würde ich das gerne, aber ich hab wenig Zeit, zwei Kinder, eine Frau und die nächsten 80 Jahre relativ wenig Einsatzzwecke für das was ich jetzt hier lernen müsste :) Daher und weil es mir unangenehm ist wenn mir so toll geholfen wird und ich nichts dazu beisteuern kann dachte ich eben an diesen Weg :)

Wenn aber dennoch jemand bereit ist mir dabei zu helfen, danke!

Wie beschrieben möchte ich alle Unterordner des Ordners X löschen, die keine PSD oder TIF Dateien enthalten. Klingt so eigentlich einfach :) ?!
 

gipser

Benutzer
Mitglied seit
13. Nov 2013
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Du weisst aber schon, dass du nur leere Ordner löschen kannst. (Ausser du verwendest die option "force").
z.B. Annahme, du hast folgende Ordner/Unterordner:
/pfad/X
/pfad/X/U1
/pfad/X/U1/UU1

Und noch eine Datei:
/pfad/X/U1/UU1/bild.tif

Dann könntest du den Unterordner /Pfad/X/U1 nicht ohne weiteres löschen. Auch dann nicht, wenn /Pfad/X/U1 wie hier kein TIF und kein PSD enthält.
Grund: Er enthält ein Verzeichnis - UU1 - was im Endeffekt für Linux auch wiederum nur eine Datei darstellt.

In Folge nehme ich an, du willst also nur alle Unterordner des Ordners X löschen, die keine Dateien enthalten.
Dann könntest du das z.B damit machen.

Zunächst mal nur listen, ob es überhaupt leere Unterordner im Ordners X gibt:
for VZ in $( /usr/bin/find /pfad/X -type d -empty ) ; do ls -lR $VZ ; done

Damit leere Unterordner im Ordner X löschen:
for VZ in $( /usr/bin/find /pfad/X -type d -empty ) ; do /bin/rmdir $VZ ; done

PS: Was, du hast "nur" 2 Kinder und eine Frau und nicht mal ein Hund :D
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
hab ich unseren hund wirklich vergessen? ;) ja, doch - haben wir auch. danke für die hilfe. fie ordner werden meistens nicht leer sein, sondern immer ne txt und indd datei drin liegen haben. wie würde sich das ganze dann mit force löschen lassen?
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
fie ordner werden meistens nicht leer sein, sondern immer ne txt und indd datei drin liegen haben. wie würde sich das ganze dann mit force löschen lassen?

Wenn ich das richtig verstehe, soll alles gelöscht werden, das nicht mit PSD oder TIF endet. Teste folgendes, ob damit nur das gefunden wird, das gelöscht werden soll:
Rich (BBCode):
find /pfad/zum/ordner/ ! -name "*.PSD" -a ! -name "*.TIF"
Achtung: Dateiendungen in Kleinschrift werden damit nicht ausgeschlossen (dafür müsste iname anstelle von name verwendet werden).

Wenn dieses Suchergebnis stimmt und gelöscht werden soll, muss nur noch der delete Befehl angehängt werden:
Rich (BBCode):
find /pfad/zum/ordner/ ! -name "*.PSD" -a ! -name "*.TIF" -delete >/dev/null 2>&1
Die Dateien und Ordner (sofern leer) werden damit unwiederbringlich gelöscht.
 

gipser

Benutzer
Mitglied seit
13. Nov 2013
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Hi Xabano,

sehr schön - sieht gut aus!

Works as designed:
- Löscht Ordner die keine PSD oder TIF beinhalten.
- Falls PSD oder TIF in Ordner vorhanden, löscht der Kommand trotzdem alle anderen Dateien aus dem Ordner. Belässt somit PSD und TIF, sowie Ordner stehen.
- Selbsverständlich werden keine "Vater Ordner" gelöscht, falls es darin Unterordner gibt.
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für Eure Unterstützung! Ich stell mich wohl wieder zu blöd an :) Ich hab folgende Code getestet:

Rich (BBCode):
#!/bin/sh 
#
/usr/bin/find /volume1/hires/xyz ! -name "*.psd" -a ! -name "*.tif" -delete >/dev/null 2>&1  \;

Passiert leider nichts ;(
 

gipser

Benutzer
Mitglied seit
13. Nov 2013
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
so auf den ersten Blick sehe ich nur hinten "\;" <--- lass das mal weg.
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Ich glaube ich hatte erst ohne und hab das dann hinzugefügt, weil nichts ging. Ich hab die Zeichen jetzt gelöscht. Läuft aber noch immer nicht ;( Sieht jetzt so aus:

Rich (BBCode):
#!/bin/sh 
#
/usr/bin/find /volume1/hires/xyz ! -name "*.psd" -a ! -name "*.tif" -delete >/dev/null 2>&1
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Leider bist du sehr sparsam mit Informationen. Ich nehme mal an, dass

- die Dateien, die nicht gelöscht werden dürfen mit psd und tif enden (nicht wie in deinem früheren Beitrag PSD und TIF)
- dass der find-Befehl OHNE den Zusatz -delete die richtigen Dateien angezeigt hat, die gelöscht werden sollen

Wenn dem so ist, führe den Befehl in der Konsole ohne Unterdrückung der Fehlermeldungen aus:
Rich (BBCode):
/usr/bin/find /volume1/hires/xyz/ ! -name "*.psd" -a ! -name "*.tif" -delete

Damit werden die Fehlermeldungen angezeigt, die weiterhelfen können.
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Ich bin sehr neu hier und habe keine Ahnung von dem Thema. Ich weiß nicht wo ich das testen soll. Trage die Skripts immer in meinen Aufgabenplaner ein und lasse die dann laufen :) Sorry für Eure gestohlene Zeit aber Danke für die Hilfe und die Versuche. Ich glaube ich lass das dann einfach besser und lösche die Daten manuell :)

Danke! Grüße, Florian
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Trage die Skripts immer in meinen Aufgabenplaner ein und lasse die dann laufen
Das ist gar keine gute Idee. Insbesondere wenn es um das automatische Löschen von Dateien geht kann es ganz schön ins Auge gehen wenn Scripte ungetestet über den Aufgabenplaner ausgeführt werden. Nicht ohne Grund habe ich nicht einfach nur das Delete-Script publiziert, sondern auch eine Anleitung, wie das vorher überprüft werden soll. Der kleinste Tippfehler kann wichtige Dateien ins Nirwana schicken.

Daher mein gutgemeinter Ratschlag. Wenn du Scripte über den Aufgabenplaner laufen lassen willst, solltest du diese immer vorher in der Konsole ausgiebig testen.
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Hab hierzu eine neue Anfrage :)

Ich möchte gerne ORDNER, die den Begriff "flx" im Ordnernamen haben und Unterordner im PFAD A sind in den Ordner PFAD B verschieben. Wie Ihr sicher an dem Verlauf dieses Posts seht habe ich null Ahnung und ein selbst ausprobieren hat mich die letzten 12h leider nicht zum Ziel gebracht. Ich wäre daher für eine Lösung sehrsehrsehrsehrsehrsehrsehr dankbar!

Danke!
 

gipser

Benutzer
Mitglied seit
13. Nov 2013
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
z.B. so

/usr/bin/find /volume1/A -name "*flx*" -type d -print0 | xargs -I{} -0 mv -v {} /volume1/B
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
danke oliver! aber ich stelle mich wohl auch hier zu blöd an.

ich verwende das skript am ende im DSM aufgabenplaner.

muss da noch irgendwas davor geschrieben werden?

Rich (BBCode):
/usr/bin/find /volume1/A -name "*flx*" -type d -print0 | xargs -I{} -0 mv -v {} /volume1/B
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.944
Punkte für Reaktionen
1.213
Punkte
754
Das xargs im DSM (zumindest in Version 4.3) unterstützt die Option -I nicht. Probiere bitte einmal, ob folgendes funktioniert:

Rich (BBCode):
/usr/bin/find /volume1/A -name "*flx*" -type d -print0 | xargs -0 mv -v {} /volume1/B
 

fummupha

Benutzer
Mitglied seit
19. Okt 2013
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
leider nein. sieht so aus:

Rich (BBCode):
#!/bin/sh 
#
/usr/bin/find /volume1/agentur/sync/complete/ -name "*flx*" -type d -print0 | xargs -0 mv -v {} /volume1/agentur/jobs/flx/

sorry :(
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.944
Punkte für Reaktionen
1.213
Punkte
754
Kannst Du das Kommando auf der Konsole erfolgreich absetzen?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat