Entfernen Sie den Inhalt des Verzeichnisses auf elegante Weise

Entfernen Sie den Inhalt des Verzeichnisses auf elegante Weise

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 zshes, 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?

verwandte Informationen