Nehmen wir an, ich habe einen Verzeichnisbaum wie diesen:
FOLDER:
file1
file2
file3
Subfolder1:
file1
file2
Subfolder2:
file1
file2
Wenn ich es verwende rm -r FOLDER/*
, wird alles in FOLDER gelöscht, einschließlich der Unterverzeichnisse. Wie kann ich alle Dateien in FOLDER und seinen Unterverzeichnissen löschen, ohne die tatsächlichen Verzeichnisse zu löschen?
quelle
Wenn Ihre Version von
find
nicht unterstützt-delete
, können Sie Folgendes verwenden, um alle Dateien im aktuellen Verzeichnis und darunter zu löschen.quelle
-exec rm {} +
wäre schneller, vor allem wenn es viele dateien gibt.find . ! -type d -exec rm {} +
entfernt auch Sym-Links.find
nicht unterstützt wird-delete
, unterstützt sie wahrscheinlich auch nicht-exec ... {} +
. Der empfohlene Weg, damit umzugehen, istfind ... -print0 | xargs -r0 rm
(wenn man viele mögliche Übereinstimmungen erwartet).-exec ... {} +
ist POSIX, ist es aber-delete
nicht. (-print0
find
Implementierungen gestoßen , die unterstützt werden,-print0
aber nicht-exec ... {} +
(ich erinnere mich jedoch nicht daran-delete
). Einer war unter OS X, der andere unter Solaris (vor einigen Jahren auf einem sehr konservativ aktualisierten System). Sie können auch ersetzen-print0
mit-printf '%p\0'
. Wie auch immer, dies ist Ask Ubuntu und nicht Unix & Linux und Ubuntu benutzt GNU find seit Ewigkeiten.