Wie lösche ich alle Dateien und Verzeichnisse in einem Verzeichnis, einschließlich der versteckten, außer .htaccess?

Wie lösche ich alle Dateien und Verzeichnisse in einem Verzeichnis, einschließlich der versteckten, außer .htaccess?

Wie die Frage schon andeutet, habe ich eine Situation, in der ich einen Ordner habe, in den Benutzer seltsame Sachen hochladen können. Habe einen Cron-Job eingerichtet, der diesen Ordner alle paar Stunden bereinigt.

Es hat aus Sicherheitsgründen natürlich eine .htaccess. Meine Frage ist, wie kann ich alles (Dateien und Verzeichnisse) in diesem Verzeichnis löschen, einschließlich versteckter Dateien, deren Name mit einem Punkt beginnt, aber nicht die.htaccess?

Ich muss die Arbeit derzeit rm -rf *erledigen, aber wenn der Benutzer eine Datei hochlädt, deren Name mit einem Punkt beginnt, wird sie nicht gelöscht.

Für jede Hilfe wäre ich sehr dankbar. Danke!

Antwort1

In Bash:

shopt -s dotglob extglob
rm !(.htaccess)

Antwort2

Ich würde „find“ etwa so verwenden:find /path/to/dir/ -mindepth 1 -not -name .htaccess -delete

verwandte Informationen