
Ich möchte den gesamten Inhalt des aktuellen Arbeitsverzeichnisses löschen. Wie geht das effizient und elegant?
Ich habe mehrere Dateien und Verzeichnisse und einige davon beginnen mit einem Punkt, wie:
touch .abc; touch abcd ; mkdir foobar; touch "file name" "#"
Ich suche nach einer POSIX-kompatiblen, eleganten Lösung, um dieses Verzeichnis zu leeren. Ich werde einige meiner Ideen veröffentlichen, aber keine davon ist perfekt.
Antwort1
rm -rf -- * .*
Dies ist portabel und funktioniert, ist aber hässlich, da zsh
es, außer mit , Warnungen ausgibt:
rm: cannot remove directory: `.'
rm: cannot remove directory: `..'
Antwort2
Versuche dies:
find . -maxdepth 1 -not -name \. -exec rm -rf \{\} ;
Antwort3
POSIX:
rm -rf -- * .[!.]* ..?*
Das hier könnte fehlschlagen, wenn die Liste der Dateien zu groß ist, das hier würde nicht passieren:
find . ! -name . -prune -exec rm -rf {} +
Mit zsh
:
rm -rf -- *(D)
Antwort4
wie wäre es mit
rm -rf * .[a-z]* .[A-Z]* .[0-9]*
wird das funktionieren? oder haben Sie auch andere Dateinamenmuster, die abgeglichen werden müssen?