2014-12-18 6 views
5

so habe ich jedes einzelne Skript hier zum Löschen von Verzeichnissen älter als 14 Tage betrachtet. Das Skript, das ich geschrieben habe, arbeitet mit Dateien, aber aus irgendeinem Grund löscht es nicht die Verzeichnisse. Also hier sind meine Skripte.Löschen Sie Verzeichnisse älter als X Tage

#!/bin/bash 
find /TBD/* -mtim +1 | xargs rm -rf 

Dieser Code löschte erfolgreich die Dateien innerhalb von TBD, aber es ließ zwei Verzeichnisse. Ich überprüfte den Zeitstempel auf ihnen und sie sind mindestens 2 Tage seit der letzten Änderung entsprechend dem Zeitstempel. Genauer gesagt 16. Dezember 16:10 Also kann ich das nicht herausfinden. Meine crontab die ich laufen lasse läuft jede Minute und protokolliert und im log zeigt es nur.

Ich habe Inhalt verwendet, da der Inhalt tatsächlich der Name des Volkes in unserem pxe-Server ist. Ich habe jede Datei und jeden Ordner INNERHALB dieser beiden Verzeichnisse überprüft und ihre Zeitstempel stimmen mit dem übergeordneten Verzeichnis überein, wie es sein sollte, aber es wird immer noch nicht gelöscht.

Könnte es eine Erlaubnissache sein? Ich schrieb das Skript mit sudo nano deletebackups.sh Wenn ich ls unter TBD in den äußersten linken gibt es drwxr-xr-x 3 hscadministrator root 4096 DEC 16 16:10 für jedes der zwei Verzeichnisse, die nicht löschen. Ich weiß nicht genau, was all diese Buchstaben bedeuten.

Weitere Iterationen dieses Codes habe ich versucht, schon sind

find /TBD/* -mtime +1 rm -r {} \; 

Antwort

2

-exec hinzufügen und -F auf Ihre Entdeckung:

find /TBD/* -mtime +1 -exec rm -rf {} \; 

Hinweis, wenn Sie suchen, Dateien zu löschen, die älter sind als 14 Tage, müssen Sie mtime ändern:

-mtime +14 
+0

Hey sollte das in der ursprünglichen Post erwähnt haben. Ich brauche es, um beide Dateien und Verzeichnisse zu löschen, so dass es nicht funktioniert. Aber um neugierig zu sein, habe ich versucht, die Verzeichnisse zu löschen und es hat immer noch nicht funktioniert. – stobiewankenobi

+0

Sie haben die -exec in Ihrem find Befehl vergessen, sollte funktionieren, wenn Sie es ändern. – Bolboa

+0

Nun, es muss an einem bestimmten Ort sein, nicht die. einfach alle Verzeichnisse markieren? Ich möchte nicht, dass alle Verzeichnisse gelöscht werden. – stobiewankenobi

9

löschen Verzeichnisse in/TBD älter als 1 Tag:

find /TBD -mtime +1 -type d | xargs rm -f -r 
+0

Ich möchte auch, dass Dateien gelöscht werden, aber wenn nötig, füge ich dem Skript eine weitere Zeile hinzu, die Dateien angibt. Ich werde das versuchen und sehen, ob es funktioniert. – stobiewankenobi

+0

Nein. Die zwei Verzeichnisse sind immer noch da. – stobiewankenobi

+0

Sind Sie sicher, dass der Benutzer, der den Befehl find ausführt, über die erforderlichen Berechtigungen zum Löschen dieser Verzeichnisse verfügt? – mti2935