Der nächste, den ich bekommen habe, ist
# rm /path/to/directory/*.*
aber das funktioniert nicht für Dateien, die keine Erweiterung haben ...
command-line
rm
user784637
quelle
quelle
shopt -s dotglob
vor dem Ausführen ausrm (...)
all files
;)*.*
bedeutet alle Dateien, die.
irgendwo im Namen enthalten*a*
also null oder mehr Zeichen,a
gefolgt von null oder mehr Zeichen. Es würde die Dateinamen übereinstimmenhappy
,apple
,a
oderla
.So entfernen Sie den Ordner mit seinem gesamten Inhalt ( einschließlich aller internen Ordner ):
So entfernen Sie den gesamten Inhalt des Ordners ( einschließlich aller internen Ordner ), jedoch nicht den Ordner selbst:
oder
wenn Sie sicherstellen möchten, dass auch versteckte Dateien / Verzeichnisse entfernt werden.
So entfernen Sie alle "Dateien" aus einem Ordner ( ohne interne Ordner zu entfernen ):
Warnung : Wenn Sie Leerzeichen in Ihrem Pfad haben, stellen Sie sicher, dass Sie immer Anführungszeichen verwenden.
entspricht 2 getrennten
rm -rf
Aufrufen:Um dieses Problem zu vermeiden, können Sie
'
einfache Anführungszeichen'
( erweitert keine Shell-Variablen) oder"
doppelte Anführungszeichen"
( erweitert Shell-Variablen) verwenden:Wo:
rm
- steht für " entfernen "-f
- steht für " force ", was hilfreich ist, wenn Sie nicht gefragt werden möchten, ob Sie beispielsweise ein Archiv entfernen möchten.-r
- steht für " rekursiv ", was bedeutet, dass Sie jeden Ordner rekursiv durchgehen und alles entfernen möchten.quelle
rm -rf /path/to/directory/*
entfernt keine versteckte Datei im Ordner zB.htaccess
. Vielleichtrm -rf /path/to/directory/.
? Habe es nicht ausprobiert.rm -rf /path/to/directory/.*
löscht nur die versteckten Dateien im angegebenen Verzeichnis. Wenn Sie sich den Kommentar von @ danjjl zur Antwort von @ Rinzwind ansehen, um auch versteckte Dateien zu löschen, führen Sie ihn aus,shopt -s dotglob
bevor Sie ihn ausführenrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
Auf meinem System wurden die Elemente in gelöscht/path/to
. Zum Glück hatte ich gerade meine gesamten Daten auf einer separaten Festplatte gesichert. Der Befehlrm -rf /path/to/directory/.*
darf NICHT ausgegeben werden, es sei denn, Sie haben Ihren gesamten Computer an einem separaten / sicheren Ort gesichert!So entfernen Sie alle Dateien im Verzeichnis (einschließlich versteckter Dateien und Unterverzeichnisse):
quelle
./
und../
die versteckten Dateien werden trotzdem gelöscht.rm -r $(pwd)/{*,.*}
Wenn Sie nur Dateien in / path / to / directory löschen möchten, können Sie dies tun
oder
Sie können Lasten damit erledigen
find
, der Vorteil ist, dass Sie auflisten können, was gefunden wird, ohne es weiterzuleiten,rm
sodass Sie sehen können, was gelöscht wird, bevor Sie beginnen.quelle
GNU find
als-delete
Prädikat. Wenn Sie noch verwenden möchten-exec
, und ersetzen\;
mit+
versammelnrm
Anrufe zusammen, die Effizienz zu erhöhen.Um alle Dateien und Verzeichnisse (einschließlich der ausgeblendeten ) in einem Verzeichnis zu löschen , können Sie Folgendes versuchen:
Löschen Sie den Ordner und erstellen Sie ihn neu
verwenden
find
Hier geben wir
-mindepth 1
an, dass das Verzeichnis dir_name selbst ausgeschlossen werden soll.Schauen Sie sich den folgenden Link an:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
quelle
Wenn Sie auch alle Unterverzeichnisse und das Verzeichnis selbst entfernen möchten, können Sie verwenden
rm -rf /path/to/directory
. Aber überprüfen Sie Ihre Zeile immer noch einmal, bevor Sie dierm -rf
Eingabetaste drücken. Dies kann ebenfalls zu Problemen führen, z.quelle
Da diese Frage bei Google ständig im Vordergrund steht, wenn ich selbst danach suche:
Die anderen Antworten haben unterschiedliche Probleme:
Einige von ihnen gehören
.
und..
das ist laut, verwirrend und ärgerlich.Einige von ihnen vergessen versteckte Dateien (Dateien, die mit einem Punkt beginnen).
Sie werden nicht in der richtigen (tiefsten zuerst) Reihenfolge gelöscht, um das Löschen des Verzeichnisses zu ermöglichen.
Sie gehen in andere (gemountete) Dateisysteme über, was häufig unerwünscht ist.
Es ist schwierig, sie mit zusätzlichen Parametern richtig zu erweitern (mehr dazu weiter unten).
Gehen Sie folgendermaßen vor, um alle Dateien UND Ordner in einem Verzeichnis REKURSIV zu löschen:
Beachten Sie, dass ich ein
-xdev
Argument hinzugefügt habe , um das Herabsteigen in Reittiere (wie/proc
usw.) zu verhindern .Warum nicht
-depth
oder-delete
?Obwohl die Leute mich ständig dafür herabstimmen, haben diese Methoden einen Nachteil: Sie scheinen nicht erweiterbar genug zu sein, um
-prune
ein Unterverzeichnis zuzulassen (ohne weitere Probleme einzuführen). Im Gegensatz zu dieser Methode könnten Sie einfügenvor dem
-mindepth
Argument, um auszuschließen,subdir
dass sein Inhalt gelöscht wird.quelle
-depth
Flaggefind
.-delete
mit verwendenfind
?-delete
ist Tiefe an erster Stelle. Sie gehen bereits von Nicht-POSIXfind
mit dem aus-printf
, daher können Sie auch-delete
oder-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... aber meine? Warum?Sie können
cd
in das Verzeichnis und dann den Befehlrm *.*
wie in DOS ausführen, wenn Sie sich erinnern.quelle
Zum Löschen des aktuellen Verzeichnisses können Sie beispielsweise verwenden
rm -d ./*
-d weist an, auch Verzeichnisse zu löschen.
quelle