Wie entferne ich ein Verzeichnis und seinen gesamten Inhalt?

141

In Bash ist alles, was ich weiß, das

rmdir directoryname

entfernt das Verzeichnis jedoch nur, wenn es leer ist. Gibt es eine Möglichkeit, das Entfernen von Unterverzeichnissen zu erzwingen?

Piperchester
quelle

Antworten:

216

Der folgende Befehl erledigt das für Sie. Seien Sie jedoch vorsichtig.

rm -rf directoryname
Phillip Nordwall
quelle
52
"-f" ist "--force", wodurch einige Überprüfungen und Eingabeaufforderungen außer Kraft gesetzt werden. Ein sichereres Kommando wäre rm -r directoryname.
Jim Paris
Aus irgendeinem Grund erhalte ich eine rm: invalid option -- rFehlermeldung, wenn ich versuche, ein Verzeichnis mit rm -r <Verzeichnisname> zu löschen.
Sunspawn
@Sunspawn Überprüfen Sie diese verwandte Frage , um festzustellen , ob dies der Fall ist.
Marc.2377
1
@ JimParis Ich denke, das Wort "sicherer" ist relativ. Angenommen, Sie schreiben ein Skript, das auf einem Remotecomputer ausgeführt werden soll. Dieses Skript hat einen Befehl, der ein Verzeichnis entfernen soll. Hier wäre es "sicherer", rm -rf directorynamecoz zu verwenden, da Sie nicht möchten, dass Ihr Skript die Ausführung anhält, da es auf Benutzereingaben wartet. Natürlich müssen Sie darauf achten, dass das Löschen des Verzeichnisses keinen Schaden anrichtet.
John Red
7

Wenn dies rm -rf directorynamefehlschlägt, versuchen Sie es mit rm -R -f directoryname, oder rm --recursive -f directoryname.

Wenn Sie damit kein Glück haben, sollten Sie in Betracht ziehen, rm neu zu installieren oder die Shells zu wechseln.

saterHater
quelle
Dies waren die Optionen, die auf meiner rm-Manpage zur Verfügung standen. Ich habe sie durch Eingabe nachgeschlagen man rm, um meine Optionen zum rekursiven Löschen und die Force- Optionen anzuzeigen .
SaterHater
Wird Ihre rmManpage aufgelistet -r? Was tut es? (Versuchen Sie es in einem Verzeichnis, das Sie nur zu Testzwecken erstellt haben und in dem sich nur Dummy-Dateien (und möglicherweise Unterverzeichnisse) befinden.) Welches Betriebssystem verwenden Sie?
G-Man,
PS Wenn rm -rdies nicht funktioniert, ist dies ein Problem mit dem Betriebssystem und nicht mit der Shell. (Genau genommen handelt es sich um ein Problem mit der von rmIhnen verwendeten Version. Sie können es also beheben, indem Sie eine andere Version von installieren rmoder Ihr System durchsuchen, um festzustellen, ob Sie bereits eine andere Version von rmin einem anderen Verzeichnis als haben /bin.)
G-Man
Ah richtig. Ich habe vergessen zu erwähnen, dass ich auf Ubuntu 14.04 bin. Als ich man rmin meinem Terminal lief, gab es mir eine Textdatei mit dem lessText-Viewer. Ich habe im Bildlauf einen eingerückten Eintrag mit einem Ganzen gefunden, bei dem die Optionen -R und --recursive mit der Option -r kombiniert wurden , was bedeutet, dass alle diese Argumente identisch sind.
SaterHater
1
edit: haben Sie versuchtsudo rm -r directoryName ? Die ungeschriebenen Regeln der Grundbefehle sehen vor, -rdass ein Programm rekursiv auf jeder Datei Ihres Dateisystems ausgeführt werden kann (von wo immer Sie wollen!) Und dass -f Dinge mit Nachdruck tut, auch wenn es gefährlich ist . 'cd', 'mv', 'ls' halten dieses Prinzip meistens für richtig. ls -r /wird ein Duzie sein und cp -rf / /dev/nullalles auf Ihrem Dateisystem zerstören. <- Führe diesen Befehl niemals aus!
SaterHater