444 Stimmen

Schnelles Entfernen von Dateien und Verzeichnissen über das Terminal (Bash-Shell)

In einem Terminalfenster:

Wenn ich die rm Befehl können nur Dateien entfernt werden.
Wenn ich die rmdir Befehl werden nur leere Ordner entfernt.

Wenn ich ein Verzeichnis mit Dateien und Ordnern in Ordnern mit Dateien usw. habe, gibt es dann eine Möglichkeit, alle Dateien und Ordner ohne mühsame Befehlseingabe zu löschen?

Falls es einen Unterschied macht: Ich verwende die Mac Bash-Shell über ein Terminal, nicht Microsoft DOS oder Linux.

1000voto

Jim Lewis Punkte 41707
rm -rf some_dir

-r "rekursiv" -f "force" (Bestätigungsmeldungen unterdrücken)

Seien Sie vorsichtig!

95voto

Prine Punkte 11714
rm -rf *

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

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

19voto

Ja, die gibt es. Die -r Option sagt rm ser r ekursiv und entfernt die gesamte Dateihierarchie, die in seinen Argumenten verwurzelt ist; mit anderen Worten, wenn ihm ein Verzeichnis gegeben wird, entfernt er dessen gesamten Inhalt und führt dann etwas aus, was praktisch eine rmdir .

Die beiden anderen Optionen, die Sie kennen sollten, sind -i y -f . -i steht für i nteraktiv; sie macht rm Sie werden vor dem Löschen jeder einzelnen Datei gefragt. -f steht für f oderce; es löscht einfach alles, ohne zu fragen. -i ist sicherer, aber -f ist schneller; verwenden Sie es nur, wenn Sie absolut sicher Sie löschen das Richtige. Sie können diese mit -r oder nicht; es ist eine unabhängige Einstellung.

Und wie üblich können Sie Schalter kombinieren: rm -r -i ist nur rm -ri y rm -r -f es rm -rf .

Beachten Sie auch, dass das, was Sie lernen, gilt für bash auf jedem Unix-Betriebssystem: OS X, Linux, FreeBSD, usw. In der Tat, rm ist die Syntax in so ziemlich allen Sprachen gleich. jede Muschel auf jedem Unix-Betriebssystem. OS X ist unter der Haube eigentlich ein BSD-Unix-System.

4voto

msantoro12 Punkte 126

Ich war auf der Suche nach einer Möglichkeit, alle Dateien in einem Verzeichnis zu entfernen, mit Ausnahme einiger Verzeichnisse und Dateien, die ich behalten wollte. Ich habe einen Weg gefunden, dies zu tun, indem ich [finden.](https://en.wikipedia.org/wiki/Find(Unix))_ :

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

Im Wesentlichen verwendet es Regex, um die Verzeichnisse auszuwählen, die aus den Ergebnissen ausgeschlossen werden sollen, und entfernt dann die restlichen Dateien.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X