
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 -r
mit 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 dotglob
festgelegt haben, cd /var/www/tmp; rm -rf *
wird das gewünschte Ergebnis erzielt.