Ich bin in einem Ordner: /var/myfolder
.
Im Inneren befinden sich einige andere Ordner wie: /var/myfolder/A/
/var/myfolder/B/
`/var/myfolder/C/
etc.
In jedem befinden sich einige Dateien mit zufälligen Namen. Wie entferne ich alle Dateien aus allen darin enthaltenen Ordnern /var/myfolder
?
Die Struktur (alle darin enthaltenen Verzeichnisse, z. B. A, B, C usw. /var/myfolder
) sollte intakt bleiben.
-type f
! =! -type d
Verwenden Sie in zsh das
.
Glob-Qualifikationsmerkmal , um nur reguläre Dateien zu finden:Dadurch werden alle (nicht ausgeblendeten) regulären Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen rekursiv gelöscht. Fügen Sie das
D
Glob-Qualifikationsmerkmal hinzu, um auch ausgeblendete reguläre Dateien (und reguläre Dateien in ausgeblendeten Verzeichnissen) zu löschen.quelle
Sie können laufen
rm */*
in/var/myfolder
quelle
rm
entfernt keine Verzeichnisse - führen Sie es einfach auf allen aus.So behalten Sie Symlinks zu Verzeichnissen bei:
Und ich denke, dies sollte vielleicht auch ein wenig optimiert funktionieren, wenn es viele Dateien gibt, die in der obigen Version getestet werden müssen:
quelle
find
eine-xtype
Option dafür hat.quelle
Dadurch wird alles in den Unterordnern gelöscht, ohne die Unterordner selbst zu berühren.
Die erste
*
ist für die Unterverzeichnisse vonmyfolder
selbst (A
,B
, ...). Die zweite*
ist für die Dateien inA
,B
usw.WENN es im Inneren mehrere Ordner sind
A
,B
usw. Erster Lauf:rm /var/myfolder/*/*/*
dann laufenrm /var/myfolder/*/*
.quelle
Sie sollten auch in der Lage sein, eine CD an den Anfang des betreffenden Verzeichnisbaums zu schreiben und dann Folgendes auszuführen:
und das sollte alle Dateien löschen, während der Verzeichnisbaum intakt bleibt. Die Optionen -print0 und -0 können weggelassen werden, wenn Sie sicher sind, dass Sie keine Datei- oder Verzeichnisnamen haben, die Leerzeichen enthalten.
Der Befehl find unterscheidet zwischen Dateien (-type f) und Verknüpfungen (-type l), sodass Verknüpfungen intakt bleiben sollten, falls vorhanden. Nicht getestet. Führen Sie im Zweifelsfall Folgendes aus:
und prüfen Sie, ob etwas angezeigt wird, bevor Sie den früheren Befehl find ausführen.
quelle
rm
Flagge dazu-r, -R, --recursive - remove directories and their contents recursively
passt?Verwenden Sie einfach den folgenden Befehl:
---------------- ODER --------------------------------- -----------------------
Das '*' steht für alles, wenn Sie * verwenden, um den gesamten Inhalt zu löschen. Verwenden Sie also entweder den folgenden Befehl oder gehen Sie in das Verzeichnis, in dem Sie den gesamten Inhalt löschen möchten, und verwenden Sie einfach den folgenden Befehl:
quelle