Das Löschen des Verzeichnisses sollte funktionieren. Sie könnten Probleme bekommen, wenn Sie versuchen, einzelne Dateien zu löschen, weil es so viele gibt. Sie führen rm -rf dirname/*
nicht aus bist du?
Meine Vermutung ist, dass Sie die SSH-Verbindung aufgrund von Inaktivität verlieren. Sind Sie sicher, dass der Befehl auf dem Server nicht korrekt ausgeführt wurde?
In jedem Fall wäre ein möglicher Workaround die Verwendung von nohup:
nohup rm -rf dirname
Sie können den Befehl starten und sich abmelden, er wird im Hintergrund fortgesetzt.
UPDATE:
Ich habe diese Frage bei U&L.SE gefunden, ich empfehle Ihnen, sie sich anzusehen. Leider kann ich dein Problem nicht nachstellen. Ich habe ein Verzeichnis mit 2516007 Dateien erstellt und konnte es immer mit rm -rf
löschen :
$ mkdir ha
$ for X in $(seq 1 10000);do touch {1..10000}_$X; done
$ ls -f ha | wc -l
2516007 <= I stopped before the for loop finished, but this should be enough
$ time rm -rf ha/
real 23m11.695s
user 0m3.540s
sys 0m42.891s
Es dauerte also 20 Minuten, um ~2 Millionen leere Dateien zu löschen. Es scheint vernünftig, dass es Stunden dauern kann, eine riesige Menge nicht leerer Dateien zu löschen.
Wie auch immer, einige der Vorschläge aus der U &L-Frage sollten helfen. Speziell dieses hier:
find /delb -type f --delete
oder dieses hier (leicht modifiziert vom Original)
find /delb -type f -print0 | xargs -0r rm -f
Schließlich ist ein Trick, den Sie tun könnten, ein paar Dateien gleichzeitig zu löschen. Wenn Sie wissen, dass einige Dateinamen mit der Zeichenfolge "foo", andere mit "bar" usw. beginnen, tun Sie dies:
rm -rf /delb/foo*
rm -rf /delb/bar*
usw. Sie könnten auch so etwas versuchen:
for n in {a..z}; do rm -rf /delb/$n*; done
for n in {A..Z}; do rm -rf /delb/$n*; done
for n in {0..9}; do rm -rf /delb/$n*; done
Dieser letzte Befehl löscht nacheinander jeden Dateinamen, der mit jedem Buchstaben des Alphabets beginnt, und dann alle Dateinamen, die mit Zahlen beginnen.