rekursiv löschen, aber .gitignore-Datei behalten

rekursiv löschen, aber .gitignore-Datei behalten

Ich habe mehrere Methoden von SU ausprobiert, konnte dies aber nicht erreichen: Ich habe einen Ordner (Beispiel: /var/www/tmp/), der mehrere Dateien und Verzeichnisse enthält. Ich möchte alle Dateien und Ordner in diesem Verzeichnis löschen, mit Ausnahme der versteckten Dateien, die sich in /var/www/tmp befinden. Wie kann ich das tun?

Danke!

edit: um das klarzustellen, ich würde das gerne in einem Cronjob verwenden

Antwort1

find /var/www/tmp -mindepth 1 -maxdepth 1 ! -name ".*" -exec rm -r -- {} +

Findet Dateien mit maximaler (und minimaler) Tiefe 1 (also Dateien direkt im angegebenen Verzeichnis), dienichtBeginnen Sie mit einem Punkt und führen Sie es rm -rmit den Übereinstimmungen als Argumente aus.

Probieren Sie es zunächst mit einem einfachen Echo oder etwas Ähnlichem aus, um sich kein Eigentor zu scheren, bevor Sie genau verstanden haben, wie es bei Ihnen funktioniert.

Dies beantwortet Ihre Frage zum Beibehalten aller versteckten Dateien. Ihr Thema ist etwas anders, aber der Befehl „find“ lässt sich leicht ändern, sodass stattdessen einfach Dateien mit dem Namen ignoriert werden .gitignore.

Antwort2

Sofern Sie die Shell-Option nicht dotglobfestgelegt haben, cd /var/www/tmp; rm -rf *wird das gewünschte Ergebnis erzielt.

verwandte Informationen