it-swarm.com.de

So entfernen Sie Dateien und Verzeichnisse schnell über das Terminal (bash Shell)

Vom Terminalfenster aus:

Wenn ich den Befehl rm verwende, können nur Dateien entfernt werden.
Wenn ich den Befehl rmdir verwende, werden nur leere Ordner entfernt.

Wenn ich ein Verzeichnis mit Dateien und Ordnern in Ordnern mit Dateien usw. habe, gibt es eine Möglichkeit, alle Dateien und Ordner zu löschen, ohne den anstrengenden Befehl eingeben zu müssen?

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

301
None
rm -rf some_dir

-r "rekursives" -f "erzwingen" (Bestätigungsmeldungen unterdrücken)

Achtung!

698
Jim Lewis
rm -rf *

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

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

55
Prine

Ja da ist. Die Option -r weist rm an recursive und entfernen Sie die gesamte Dateihierarchie, die auf ihren Argumenten beruht. Mit anderen Worten, wenn ein Verzeichnis angegeben wird, entfernt es den gesamten Inhalt und führt dann das aus, was effektiv ein rmdir ist.

Die anderen beiden Optionen, die Sie kennen sollten, sind -i und -f. -i steht für ichnteraktiv; es macht rm Sie vor dem Löschen jeder einzelnen Datei aufgefordert. -f steht für force; es geht weiter und löscht alles ohne zu fragen. -i ist sicherer, aber -f ist schneller; Verwenden Sie es nur, wenn Sie absolut sicher sind , dass Sie das Richtige löschen. Sie können diese mit -r angeben oder nicht; Es ist eine unabhängige Einstellung.

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

Beachten Sie auch, dass das, was Sie lernen, für bash unter allen Unix-Betriebssystemen gilt: OS X, Linux, FreeBSD usw. Tatsächlich ist die Syntax von rm in so ziemlich jeder Hinsicht gleich jede Shell auf jedem Unix-Betriebssystem. OS X ist eigentlich ein BSD-Unix-System.

11

Also suchte ich 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 mir einen Weg ausgedacht, dies mit find zu tun.

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 von den Ergebnissen ausgeschlossen werden sollen, und entfernt dann die verbleibenden Dateien. Ich wollte es nur hier rausbringen, falls jemand anderes es braucht.

2
msantoro12