Ich weiß, dass dadurch alles in einem Unterverzeichnis und darunter gelöscht wird:
rm -rf <subdir-name>
Aber wie löscht man alles im aktuellen Verzeichnis sowie jedes Unterverzeichnis darunter und den Inhalt all dieser Unterverzeichnisse?
Ich weiß, dass dadurch alles in einem Unterverzeichnis und darunter gelöscht wird:
rm -rf <subdir-name>
Aber wie löscht man alles im aktuellen Verzeichnis sowie jedes Unterverzeichnis darunter und den Inhalt all dieser Unterverzeichnisse?
Antworten:
Übe sicheres Rechnen. Gehen Sie einfach eine Ebene in der Hierarchie nach oben und verwenden Sie keinen Platzhalterausdruck:
Die beiden Striche zeigen an
--
,rm
dass dies<dir-to-remove>
keine Befehlszeilenoption ist, selbst wenn sie mit einem Bindestrich beginnt.quelle
rm ./
Sie versehentlich eingeben,rm . /
was eine Katastrophe sein könnte.Löscht alle Dateien / Verzeichnisse unter dem aktuellen.
Wenn Sie dasselbe mit einem anderen Verzeichnis tun möchten, dessen Namen Sie haben, können Sie diesen einfach benennen
Wenn Sie nicht nur die Unterverzeichnisse und Dateien entfernen möchten, sondern auch das Verzeichnis selbst, lassen Sie es weg
-mindepth 1
. Machen Sie es ohne-delete
, um eine Liste der Dinge zu erhalten, die entfernt werden.quelle
-mindepth 1
wenn Sie ein Verzeichnis angeben (find <name-of-directory> -mindepth 1 -delete
). Andernfalls hat Johannes Recht, das aktuelle Arbeitsverzeichnis wird nicht gelöscht (bei Verwendungfind -delete
).find -mindepth 1 -delete
aber ich habeillegal option -- m
es bekommen, aber es hat großartig funktioniert, als ich die Mindepth-Option entfernt habefind . -delete
Was ich immer mache, ist Typ
und drücken Sie dann ESC- * und bash die * auf eine explizite Liste von Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis erweitern.
Die Vorteile sind:
Tatsächlich gefällt mir das so gut, dass ich es mit dieser Zeile in .bashrc zum Standardverhalten für TAB gemacht habe:
quelle
--
diese Antwort? Dieser Ansatz ist insgesamt fantastisch, muss ich sagen.Verwenden
Update: Das
.
steht für das aktuelle Verzeichnis, aber wir können dieses nicht verwenden. Der Befehl scheint explizite Überprüfungen für.
und zu haben..
. Verwenden Sie stattdessen den Platzhalter Globbing. Dies kann jedoch riskant sein.Eine sicherere Version IMO ist zu verwenden:
(Dies fordert Sie zur Bestätigung auf, bevor Sie jede Datei / jedes Verzeichnis löschen.)
quelle
Es ist richtig, dass
rm –rf .
alles in der aktuellen direkt entfernt wird, einschließlich aller Unterverzeichnisse und deren Inhalt. Der einzelne Punkt (.
) bedeutet das aktuelle Verzeichnis. Seien Sie vorsichtig,rm -rf ..
da der doppelte Punkt (..
) das vorherige Verzeichnis bedeutet.Wenn Sie wie ich sind und mehrere Terminalfenster gleichzeitig geöffnet haben, sollten Sie auf Nummer sicher gehen und
rm -ir .
die Befehlsargumente verwenden, um zu verstehen, warum.Wenn Sie sich die
rm
Manpage für Befehle (man rm
unter den meisten Unix-Versionen) ansehen, stellen Sie zunächst fest, dass dies–r
bedeutet, dass der Inhalt von Verzeichnissen rekursiv entfernt wird. Wenn Sie diesrm -r .
alleine tun, wird alles im aktuellen Verzeichnis und alles darunter gelöscht.Im
rm –rf .
hinzugefügten -f bedeutet "nicht vorhandene Dateien ignorieren, niemals auffordern". Dieser Befehl löscht alle Dateien und Verzeichnisse im aktuellen Verzeichnis und fordert Sie niemals auf, zu bestätigen, dass Sie dies wirklich tun möchten.-f
Dies ist besonders gefährlich, wenn Sie den Befehl unter einem Berechtigungsbenutzer ausführen, da Sie den Inhalt eines beliebigen Verzeichnisses löschen können, ohne die Möglichkeit zu haben, sicherzustellen, dass dies wirklich das ist, was Sie möchten.Auf der otherhand, in
rm -ri .
dem-i
DASS ersetzt die-f
Mittel „prompt vor jeder Entnahme“. Dies bedeutet, dass Sie die Möglichkeit haben, "oups! Das ist nicht das, was ich will" zu sagen, bevor rm alle Ihre Dateien glücklich löscht.In meinen frühen Sysadmin-Tagen habe ich
rm -rf /
ein System erstellt, während ich mit vollen Berechtigungen (root) angemeldet war. Das Ergebnis war, dass zwei Tage vergangen waren, um das System aus Backups wiederherzustellen. Deshalb beschäftige ich mich jetztrm -ri
jetzt.quelle
Wie wäre es mit:
quelle
Tu es nicht! Es ist gefährlich! Stellen Sie sicher, dass Sie im richtigen Verzeichnis sind!
quelle
Stellen Sie sicher , dass Sie sich im richtigen Verzeichnis befinden
quelle
Diese einfachste sichere und allgemeine Lösung ist wahrscheinlich:
quelle
Ich glaube, diese Antwort ist besser:
/unix/12593/how-to-remove-all-the-files-in-a-directory
Im Grunde geht man eine Ebene höher und sagt dann, alles im X-Verzeichnis löschen. Auf diese Weise legen Sie immer noch fest, in welchem Ordner der Inhalt gelöscht werden soll. Dies ist sicherer, als nur "Alles hier löschen" zu sagen, während der ursprüngliche Ordner erhalten bleibt (was Sie manchmal möchten, weil Sie nicht erlaubt sind oder einfach nicht wollen um die vorhandenen Berechtigungen des Ordners zu ändern)
quelle