Ich versuche, alle Dateien und Unterverzeichnisse in einem Verzeichnis zu entfernen. Früher habe ich rm -r
alle Dateien entfernt, aber ich möchte alle Dateien und Unterverzeichnisse mit Ausnahme des obersten Verzeichnisses selbst entfernen .
Zum Beispiel habe ich ein Top-Verzeichnis wie images
. Es enthält die Dateien header.png
, footer.png
und ein Unterverzeichnis.
Jetzt möchte ich löschen header.png
, footer.png
und das Unterverzeichnis, aber nicht images
.
Wie kann ich das unter Linux machen?
rm -Rf
von allen dateien und verzeichnissen dort.Antworten:
Wenn Ihr oberstes Verzeichnis aufgerufen wird
images
, führen Sie es ausrm -r images/*
. Hierbei wird der Shell-Glob-Operator verwendet*
, umrm -r
in jeder Datei oder jedem Verzeichnis in dieser Datei ausgeführt zu werdenimages
.quelle
Um versteckte Dateien zu löschen, müssen Sie Folgendes angeben:
Bei Shells, deren Globs
.
und enthalten..
, führt dies zu einem Fehler wieaber es werden versteckte Dateien gelöscht.
Ein Ansatz ohne Fehlermeldung besteht darin, find / delete mit mindepth zu verwenden. Das ist Gnu-find.
Ihrem Fund fehlt möglicherweise das Prädikat
-mindepth
oder-delete
. In diesem Fall können Sie Folgendes tun:quelle
rm .*
löscht nicht.
oder..
und hat es seit mindestens 1994 für die GNU-Utils und wahrscheinlich seit Ende der 70er Jahre für UNIX nicht mehr getan . Es ist äußerst unwahrscheinlich, dass Sie ein System finden, bei demrm .*
das Dateisystem außerhalb eines Museums nach oben durchquert wird.Um alle Dateien und Verzeichnisse (einschließlich der ausgeblendeten ) in einem Verzeichnis zu löschen , können Sie Folgendes versuchen:
Verwenden Sie
ls -Ab
, um alle Dateien / Verzeichnisse abzugleichenVerwenden Sie
find
, um alle Dateien / Verzeichnisse abzugleichenoder, wenn Ihr
find
nicht unterstützt-delete
:Löschen Sie den Ordner und erstellen Sie ihn neu
in bash,
quelle
rm -rf *
nicht sicher ist, wenn Sie keine Kenntnisse über Dateien in einem Verzeichnis haben, da eine Datei, die mit-
(Bindestrich) beginnt, alsrm
Flag interpretiert wird ...rm -rf ./* ./.*
Um alle regulären Dateien innerhalb eines Verzeichnisses rekursiv zu löschen , reicht dieser Befehl (unter der Annahme von GNU oder FreeBSD
find
) aus:So bleiben alle nicht regulären Dateien wie Symlinks (egal ob sie auf reguläre Dateien verweisen oder nicht), Verzeichnisse, Fifos, Sockets, Geräte ...
Siehe auch:
Dateien aller Art außer dem Verzeichnis löschen .
quelle
Versuchen Sie diese Version:
quelle
Ich benutze
find
Befehl hier:Schritt 1: Finde alle Dateien und lösche sie:
Beispiel:
Schritt 2: Finde alle Unterverzeichnisse und lösche sie:
quelle
find /path/to/directory/ -type d
Includes.
so löscht das Verzeichnis selbst. Sie müssen auch den-mindepth
Schalter verwenden, wie andere gesagt haben.Die Frage war, ein Verzeichnis zu leeren = den Inhalt eines Verzeichnisses einschließlich versteckter Dateien zu entfernen, nicht jedoch das Verzeichnis selbst. Der find-Befehl mit -mindepth 1 ist eigentlich der richtige Weg, aber um Fehlermeldungen zu vermeiden, muss er mit -maxdepth 1 verknüpft werden:
quelle
Die Syntax von rm lautet:
Sie müssen also den entsprechenden Pfad explizit angeben, z
quelle
Sie können das Verzeichnis mit dem folgenden Befehl entfernen:
Nach 3 / * wird das gesamte Verzeichnis gelöscht.
Beispiel sudo rm -r Downloads / song / *
Es werden alle darin enthaltenen Dateien gelöscht
Downloads/song
.quelle
Das funktioniert bei mir perfekt, getestet haben sich mehrere Variationen jedes Mal bewährt.
Aus dem Verzeichnis, in dem sich das Bilderverzeichnis befindet.
Vor:
nach:
quelle
mkdir images/.somedir
;touch images/.somefile
)So löschen Sie alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis, einschließlich der ausgeblendeten, ohne Fehlermeldung :
Oder aus dem übergeordneten Verzeichnis:
Von https://serverfault.com/a/47940/269538 .
quelle
Andere Option:
Quelle: https://askubuntu.com/a/552834/56648
quelle
Löschen Sie den Ordner "test" und alle darin enthaltenen Dateien:
Löschen Sie alle darin enthaltenen Dateien, aber behalten Sie den Ordner "test" bei:
quelle
cd in den Ordner und führe dann den folgenden Befehl aus:
quelle