Ich möchte jede Datei löschen, aber die Ordnerstruktur beibehalten. Gibt es einen Weg?
HINWEIS: (Ich verwende GNU Bash 4.1.5).
bash
bash-script
Tom Brito
quelle
quelle
Antworten:
Versuche dies:
Dadurch wird jede einzelne Datei mit Ausnahme von Verzeichnissen unterhalb des aktuellen Arbeitsverzeichnisses gelöscht. Gehen Sie mit diesem Befehl äußerst vorsichtig um.
Wenn die Version von
find
auf Ihrem Computer dies unterstützt, können Sie auch verwendenquelle
find
Befehl sieht niemals die Anführungszeichen. Der{}
Marker wird nur als Argument angesehen.-exec command {} +
" & dies "-exec command ;
". Ich habe\;
in der Vergangenheit einfach nie das '{}' benutzt.find
. Ich denke, die Vorlagen sollen zeigen, welche Argumente derfind
Befehl benötigt, und sich um nichts in Verbindung mit der Shell kümmern.Sie können den Befehl verwenden
find
, um jede Datei zu suchen, aber die Verzeichnisstruktur beizubehalten:In dieser Unix & Linux-Frage & Antwort mit dem Titel: Gnu findet und maskiert das {} für einige Shells - welche? Bei modernen Muscheln wie Bash scheint es nicht mehr notwendig zu sein ,
{}
mit einzelnen Häkchen ('
) zu entkommen .quelle
So löschen Sie einfach jede reguläre Datei im aktuellen Verzeichnis und in den Unterverzeichnissen rekursiv:
Nur zsh verfügt über Globbing-Qualifikationsmerkmale , um Dateien nach Typ zuzuordnen . Der
rm
Befehl funktioniert jedoch nicht für Verzeichnisse, sodass Sie ihn in bash verwenden könnenDies funktioniert nur bei Befehlen
rm
. Im Allgemeinen können Sie Folgendes verwendenfind
:oder wenn dein
find
nicht unterstützt-delete
:quelle
Ich hatte ähnliche Anforderungen, um Dateien aus einem Pfad und seinen Unterverzeichnissen zu löschen (nach Zeit filtern), ohne die Verzeichnisstruktur zu löschen.
Und ich habe das folgende Format verwendet, das für mich gearbeitet hat.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex: find (Pfad der Datei) -mtime (größer oder kleiner als Tage) -type f -exec rm {} \;
-type: Erwähne den Dateityp "f" für das Verzeichnis "d" -exec: führe den Befehl rm aus: entferne {}: Ausgabe des Befehls find
Hinweis: Testen Sie es, bevor Sie es verwenden. Bitte zögern Sie nicht zu korrigieren oder zu aktualisieren, wenn ich etwas verpasst habe.
quelle
find ... rm
bereits abgedeckt wurde, bin ich mir nicht sicher, ob dies ein wertvoller Beitrag als neue Antwort auf diese Frage ist.