Wie lösche ich ein nicht leeres Verzeichnis in Terminal?

630

Wie lösche ich das folgende Verzeichnis?

Ich tippte:

rmdir lampp

Dieser Fehler tritt auf:

rmdir: failed to remove `lampp': Directory not empty

Gibt es einen Befehl zum Löschen aller Dateien im Verzeichnis und zum Löschen des Verzeichnisordners?

naveen
quelle
1
Ich kann ein Verzeichnis wie "New Folder" mit den oben genannten Befehlen nicht entfernen. Es ist doppelt formuliert. Aber ich möchte dieses Verzeichnis entfernen. Anregungen werden gerne entgegengenommen. T.Divakara, Bengaluru, Indien
Versuchen Sie, als Leerzeichen im Dateinamen "Anführungszeichen"> rmdir 'New Folder' <und dann die Ordnerdisketten zu verwenden, oder verwenden Sie Escape-Zeichen für nicht sichtbare Zeichen.
Ken Mollerup
2
Einfach rm -r lamppmachen reicht.
John Strood

Antworten:

876

Verwenden Sie den folgenden Befehl:

rm -rf lampp

Es löscht alle im Verzeichnis enthaltenen Dateien und Ordner lampp.

Falls der Benutzer keine Berechtigung zum Löschen des Ordners hat:

Fügen Sie sudoam Anfang des Befehls Folgendes hinzu:

sudo rm -rf folderName

Anderenfalls wird sudoIhnen ohne Ihre Rückgabe die Erlaubnis verweigert. Es wird empfohlen, -fbeim Löschen eines Verzeichnisses Folgendes zu vermeiden:

sudo rm -r folderName

Hinweis: Dies setzt voraus, dass Sie sich bereits auf derselben Ebene des Ordners befinden, den Sie im Terminal löschen möchten. Andernfalls gilt Folgendes:

sudo rm -r /path/to/folderName

Zur Info: Sie können Buchstaben verwenden -f, -r, -v:

  • -f = um nicht existierende Dateien zu ignorieren, niemals auffordern
  • -r = um Verzeichnisse und deren Inhalte rekursiv zu entfernen
  • -v = zu erklären, was getan wird
Shantanu Banerjee
quelle
69
Meiner bescheidenen Meinung nach ist es eine gute Praxis, niemals das "f" beim ersten Versuch hinzuzufügen. Der Zweck besteht darin, bestimmte Warnmeldungen zu ignorieren, die möglicherweise wichtig sind, insbesondere wenn Sie sie versehentlich im / aus dem falschen Verzeichnis ausgeführt haben. Meiner Meinung nach ist es gut, zuerst ohne das "f" zu versuchen, dann nur, wenn Sie auf viele Warnmeldungen stoßen und Sie sicher sind, dass es in Ordnung ist, sie alle zu ignorieren. f ".
Thomasrutter
@BKSpurgeon nicht , es sei denn Sie versehentlich eingeben --no-preserve-rootzu .
muru
@ thomasrutter ... Stimme zu. Eine Datei "xxx" Eigentümer: root und Gruppe: root kann mit der Option -f gelöscht werden. und ohne sudo . Dies ist die Meldung ohne -f : " rm: Schreibgeschützte reguläre Datei '/home/william/.cache/netbeans/v08.01/tmp/xxx' entfernen? _". _Sanft treten.
wird
95
rm -R lampp

Bei einem solchen rekursiven Befehl müssen Sie jedoch vorsichtig sein, da es leicht möglich ist, aus Versehen viel mehr zu löschen, als Sie beabsichtigt haben.

Es ist eine gute Idee, immer zu überprüfen, in welchem ​​Verzeichnis Sie sich befinden und ob Sie den Befehl richtig eingegeben haben, bevor Sie die Eingabetaste drücken.

Sicherere Version

rm -R -i lampp

Das Hinzufügen -imacht es ein wenig sicherer, da Sie bei jedem Löschen dazu aufgefordert werden. Wenn Sie jedoch viele Dateien löschen, ist dies nicht sehr praktisch. Trotzdem können Sie dies zuerst versuchen.

Anmerkung zur -f Option:

Viele Leute schlagen vor -f, es zu verwenden (in -Rfoder zu kombinieren -rf) und behaupten, dass es lästige Eingabeaufforderungen beseitigt. Im Normalfall benötigen Sie es jedoch nicht, und durch die Verwendung werden einige Probleme unterdrückt, über die Sie wahrscheinlich Bescheid wissen möchten. Wenn Sie es verwenden, werden Sie nicht gewarnt, wenn Ihre Argumente ein nicht existierendes Verzeichnis oder eine nicht existierende Datei enthalten: rm wird einfach nichts löschen. Versuchen Sie es in der Regel zunächst ohne -f: Wenn es Probleme mit Ihren Argumenten gibt, werden Sie feststellen. Wenn Sie zu viele Aufforderungen zu Dateien ohne Schreibzugriff erhalten, können Sie es mit versuchen-f. Alternativ können Sie den Befehl von einem Benutzer (oder dem Superuser, der sudo verwendet) ausführen, der über die vollständigen Berechtigungen für die zu löschenden Dateien und Verzeichnisse verfügt, um diese Eingabeaufforderungen zu verhindern.

thomasrutter
quelle
4
Hinweis: Kleinbuchstaben -rkönnen ebenfalls verwendet werden und haben hier den gleichen Effekt. Ich verwende normalerweise nur Großbuchstaben, -Rda diese mit anderen Befehlen übereinstimmen, die ich verwende, z. B. grepund chmod, von denen einige nur die Großbuchstabenform unterstützen.
Thomasrutter
Dieser funktionierte für mich mit ADB (Android Debug Bridge) auf Android. Ich habe versucht, rm -rf, aber es hat nicht funktioniert. Musste rm -R verwenden. Vielen Dank.
Raddevus
Dies ist eine gute Lösung, insbesondere wenn Sie noch keine Erfahrung mit dem Bash-Terminal haben. Der Befehl kann auf gekürzt werden rm -ir FOLDER.
AlainD
24

Es gibt viele Möglichkeiten, ein Verzeichnis über den CLI-Modus zu löschen. Es kommt darauf an, wie Sie sich wohlfühlen.

rm -rvf /path/to/directory  
  • -r = entferne Verzeichnisse und deren Inhalte rekursiv
  • -v = erklären, was getan wird
  • -f = ignoriere nicht existierende Dateien, bitte nie fragen

Wenn Sie neu in Linux sind, verwenden Sie die Befehlsseiten ( man rm) für mehr Optionen und mehr Genauigkeit.

Papseddy
quelle
-2

Ich hatte heute einige Probleme damit, aber ich habe es mit sudo überwunden.

Vorsichtsmaßnahme: Stellen Sie sicher, dass Sie das gesamte Objekt löschen möchten, bevor Sie den folgenden Befehl verwenden.

$ sudo rm -R [Directory name]

Ich habe dies heute erfolgreich getan und viele nicht leere Verzeichnisse entfernt, von denen ich bestätigt habe, dass ich sie nicht brauche / brauche.

Ich benutze 14.04 LTS

Thomas
quelle
4
"SUDO" ist kein Befehl - "sudo" ist. Sie verwenden sudo jedoch nicht zum Löschen eines nicht leeren Verzeichnisses, sondern zum Löschen einer Datei, deren Eigentümer Sie nicht sind. Dies ist natürlich gefährlich und nicht sehr klug, da Sie nicht blind Dateien löschen sollten, die Sie nicht besitzen.
Marty Fried
-3

Übrigens wollte ich persönlich ein Verzeichnis mit einer schreibgeschützten Datei (.git und Unterverzeichnisse) löschen und erkannte schließlich, dass ich auch ein Superuser werden musste, um diese Dateien erfolgreich zu löschen. Folgendes habe ich getan:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
Harvey Williams
quelle
4
Ich glaube nicht, dass du sudo suhier brauchst . Stellen Sie dem rmBefehl einfach Folgendes voran sudo. Aus Sicherheitsgründen ist es eine gute Praxis (gemäß den Befürwortern von sudo), nicht in einer Root-Eingabeaufforderung zu bleiben, wenn dies nicht erforderlich ist.
Thomasrutter
2
Seien Sie sich auch sehr, sehr sicher, in welchem ​​Verzeichnis Sie sich befinden, wenn Sie sich befinden sudo rm -r.
Tony Martin
Sie können den Befehl root-relative ( /directory_name) eingeben, damit kein Zweifel darüber besteht, welches Verzeichnis Sie löschen.
Yaakov Ainspan