So entfernen Sie Dateien und Verzeichnisse schnell über das Terminal (Bash-Shell) [geschlossen]

331

Vom Terminalfenster:

Wenn ich den rmBefehl verwende, kann er nur Dateien entfernen.
Wenn ich den rmdirBefehl verwende, werden nur leere Ordner entfernt.

Wenn ich ein Verzeichnis habe, das mit Dateien und Ordnern in Ordnern mit Dateien usw. verschachtelt ist, gibt es eine Möglichkeit, alle Dateien und Ordner ohne die mühsame Eingabe von Befehlen zu löschen?

Wenn es einen Unterschied macht, verwende ich die Mac-Bash-Shell vom Terminal aus, nicht Microsoft DOS oder Linux.

Baduker
quelle
Nur für den Fall, dass Sie die Dateien in Zukunft wiederherstellen möchten, verwenden Sie in solchen Fällen nicht "rm". Verwenden Sie "rm-trash": github.com/nateshmbhat/rm-trash
Natesh bhat

Antworten:

759
rm -rf some_dir

-r "rekursiv" -f "erzwingen" (Bestätigungsnachrichten unterdrücken)

Achtung!

Jim Lewis
quelle
26
+1 und froh, dass du das "Sei vorsichtig!" Teil ... definitiv ein "Sawzall" -Befehl, der einen guten Tag schnell in einen schlechten verwandeln kann ... wenn er unachtsam eingesetzt wird.
matt
5
wie nicht tun "# rm -rf /" Sie werden das bereuen:
DarthVader
1
@itsmatt: Du weißt was sie sagen ... gib jemandem einen Sawzall und plötzlich sieht jedes Problem nach stundenlangem Spaß aus!
Jim Lewis
164
Auf einem Mac? Tun Sie dies stattdessen: brew install trashDann trash -rf some_dirwird das unerwünschte Verzeichnis in Ihren Papierkorb verschoben, anstatt nur den Prestige- Stil im Äther zu verschwinden . ( Quelle )
Zakdances
4
Der "Trash" -Ansatz ist großartig!
Anopres
59
rm -rf *

Würde alles (Ordner & Dateien) im aktuellen Verzeichnis entfernen.

Aber sei vorsichtig! Führen Sie diesen Befehl nur aus, wenn Sie absolut sicher sind, dass Sie sich im richtigen Verzeichnis befinden.

Prine
quelle
17
rm -rf ist ein sehr riskanter Befehl. Sie sollten immer vorsichtig sein und den zu löschenden Ordner angeben.
Eomeroff
8
Wie wäre es, ls -R *zuerst zu laufen, um zu sehen, was vonrm -rf *
Hammad Khan
Das funktioniert gut für mich, danke.
Monica Hübner
14

Ja da ist. Die -rOption weist rman, rekursiv zu sein und die gesamte Dateihierarchie zu entfernen, die auf ihren Argumenten basiert. Mit anderen Worten, wenn ein Verzeichnis angegeben wird, entfernt es den gesamten Inhalt und führt dann das aus, was effektiv ein Verzeichnis ist rmdir.

Die anderen beiden Optionen, die Sie kennen sollten, sind -iund -f. -isteht für i nteractive; Sie werden rmaufgefordert, bevor Sie jede einzelne Datei löschen. -fsteht für f orce; es geht voran und löscht alles ohne zu fragen. -iist sicherer, aber -fschneller; Verwenden Sie es nur, wenn Sie absolut sicher sind, dass Sie das Richtige löschen. Sie können diese mit -roder nicht angeben ; Es ist eine unabhängige Einstellung.

Und wie immer können Sie Schalter kombinieren: rm -r -iist gerecht rm -riund rm -r -fist rm -rf.

Beachten Sie auch, dass das, was Sie lernen, für bashjedes Unix-Betriebssystem gilt: OS X, Linux, FreeBSD usw. Tatsächlich ist rmdie Syntax in nahezu jeder Shell unter jedem Unix-Betriebssystem gleich. OS X unter der Haube ist wirklich ein BSD-Unix-System.

Antal Spector-Zabusky
quelle
1
Obwohl alle oben genannten Optionen bei allen aufgeführten Unix-Varianten Standard sind, gibt es auch einige Unterschiede. Zum Beispiel hat OS X (aber nicht Linux) "rm -d", das entweder Dateien oder leere Verzeichnisse entfernt. Dennoch +1 für den Punkt, dass OS X intern BSD ist.
David Gelhar
Richtig --- Es ist (ziemlich) garantiert, dass die POSIX-Teilmenge unter Unixen konsistent funktioniert, aber alles außerhalb davon kann oder kann nicht.
Antal Spector-Zabusky
2

Also suchte ich überall nach einer Möglichkeit, alle Dateien in einem Verzeichnis zu entfernen, mit Ausnahme einiger Verzeichnisse und Dateien, die ich behalten wollte. Nach langem Suchen habe ich einen Weg gefunden, dies mit find zu tun.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Im Wesentlichen wird Regex verwendet, um die Verzeichnisse auszuwählen, die von den Ergebnissen ausgeschlossen werden sollen, und dann die verbleibenden Dateien entfernt. Ich wollte es nur hier rausbringen, falls jemand anderes es brauchte.

msantoro12
quelle