Ich habe ein Verzeichnis auf meinem Windows 7-Computer, das Hunderte, wenn nicht Tausende von Unterverzeichnissen enthält. Einige von ihnen haben Dateien, andere nicht. Ich möchte alle leeren Verzeichnisse löschen.
Wenn Sie den DOS-Befehl del und rmdir betrachten, sieht es nicht so aus, als könnten Sie dies rekursiv tun, ohne alle Dateien zu löschen. Gibt es eine Möglichkeit, dies von der Befehlszeile aus zu tun?
windows
command-line
mohlsen
quelle
quelle
xcopy FROMDIR TODIR /s
. Siehe diese SO-Antwort: stackoverflow.com/a/14742810Antworten:
Sie können das Dienstprogramm Leere Verzeichnisse entfernen verwenden .
Alternativ können Sie diese einzeilige Batch-Datei (von DownloadSquad ) verwenden:
(falls in einer Batch-Datei verwendet, ersetzen
%d
durch%%d
)Dies funktioniert, weil
rd
ein Verzeichnis, das Dateien enthält, nicht entfernt wird.quelle
Sie können auch ROBOCOPY verwenden. Es ist sehr einfach und kann auch zum Löschen leerer Ordner innerhalb einer großen Hierarchie verwendet werden.
Hier sind sowohl Quelle als auch Ziel
folder1
, da Sie nur leere Ordner löschen müssen, anstatt andere Dateien in einen anderen Ordner zu verschieben./S
Die Option besteht darin, das Kopieren (Verschieben, in diesem Fall) von leeren Ordnern zu überspringen. Es ist auch schneller, wenn die Dateien in dasselbe Laufwerk verschoben werden.quelle
folder1
? Unheimlich, wenn nicht gut getestet./MOVE
kopiert zuerst die Dateien und löscht dann die Quelldatei nach dem Kopieren. So, wie/S
es verwendet wird, kopiert es die nicht leeren Ordner zum Ziel (derselbe Ordner im obigen Fall). Dann löscht es die leeren Ordner (es wird angenommen, dass leere Ordner bereits kopiert wurden). Nein, verschachtelte Ordner werden nicht verschobenfolder1
, da ROBOCOPY Ordner rekursiv verschiebt.Da Cygwin mit GNU find geliefert wird, können Sie dies tun:
Oder um das Rauschen zu vermeiden, wenn ein Ordner nicht mehr vorhanden ist:
quelle
find . -type d -empty -delete
schlägt this ( ) an der Eingabeaufforderung mit folgendem Fehler fehl:FIND: Parameter format not correct
Das kostenlose Dienstprogramm EmptyFolderNuker erledigt dies in einem Basisordner Ihrer Wahl. Es werden auch die Verzeichnisse entfernt, die nur leere Unterverzeichnisse enthalten.
quelle
"%~dp0\EmptyFolderNuker.exe" %cd%
.Wenn Sie Cygwin installiert haben, können Sie dies tun:
quelle
find
(starting-directory)
-depth
-type d ...
-depth
find
Wenn Sie in Emacs arbeiten (wodurch diese Plattform nicht von der Konkurrenz abhängig ist), funktioniert Folgendes:
quelle
D
wenn ich wollte, aber da ich keinen gemeinsamen Bedarf dafür habe, muss ich nur tippenM-x *ded RET
und loslegen. (Wenn ich das tatsächlich jedes Mal tippen müsste, hast du absolut Recht, dass es absurd wäre - zum Glück ist das nicht der Fall.)M-x *ded RET
es irgendeine Bedeutung oder ist es zufällig? Wie können Sie in letzterem Fall alle Verknüpfungen nachverfolgen, die Sie zugewiesen habenemacs
? Reicht das Auswendiglernen aus oder müssen Sie es nachschlagen?*ded
ist eine Abkürzung für den vollständigen Funktionsnamen*-delete-empty-directories
. Viele Vervollständigungs-Engines (wie das von mir verwendete Ivy) verstehen diese Art von Fuzzy-Matching. Ich muss sie einfach nicht auswendig lernen. Die von mir definierten Funktionen beginnen mit,*
damit ich sie leicht finden kann, wenn sie nicht an einen Schlüssel gebunden sind. Andernfalls teilt mir Emacs selbst mit, ob es eine schnellere Methode zum Aufrufen der Funktion gab. Wenn alles andere fehlschlägt, gibt es immerapropos
.Zusammenfassung der Beiträge von Gareth und G-Man:
Edit: Aber das gab einen Sicherheitsfehler wegen 'C' in meinem PATH var ... also stattdessen:
Ich verwende keine xargs, da es anscheinend ein Eingabezeilenlimit gibt (von ungefähr 1024 Zeilen, denke ich?), Wohingegen
macht einfach so lange weiter, wie es Input hat. Lassen Sie das ausführliche Flag "-v" weg, wenn Sie die Ergebnisse nicht sehen und / oder schneller ausführen möchten.
quelle
Hmmm ... vielleicht noch einfachere Lösung:
for /d /r %d in (*.*) do rd "%d"
Starten Sie dies aus dem Ordner, in dem leere Ordner gelöscht werden sollen.
/ d - Arbeitet mit Ordnern, nicht mit Dateien. / r - Wiederholt Unterverzeichnisse
quelle