Verzeichnisse löschen

0

Ich habe eine Liste der übergeordneten Ordner. In jedem übergeordneten Ordner befinden sich Unterordner und Dateien. Wie kann ich die übergeordneten Ordner leeren - dh alle Dateien und Unterordner entfernen und die übergeordneten Ordner leer lassen?

Parent folder A
       subfolder aa
       file a
Parent folder B
       file b
       file vv
Parent folder C
       subfolder s
       subfolder n 
        file x
.
.
.
.
Jeff Schaller
quelle

Antworten:

5

Mit GNU find:

find "Parent folder A" "Parent folder B" ... -mindepth 1 -delete
muru
quelle
3

Alternativ können Sie rmdas Entfernen in jedem übergeordneten Ordner starten:

# set dotglob to have * include files beginning with '.'
shopt -s dotglob
rm -r "Parent folder A"/* "Parent folder B"/* ...
Jeff Schaller
quelle
0

Angenommen, es befinden sich keine Dateien im obersten Verzeichnis:

for i in *; do (cd "$i"; rm -rf *); done

oder

for i in *; do (cd "$i"; for j in *; do rm -rf "$j"; done); done

Ich bevorzuge letzteres, da es nicht versucht, zu entfernen, *wenn das Verzeichnis leer ist, und es leicht geändert werden kann, um nur einige Dateimuster einzuschließen. Für etwas komplizierteres verwenden Sie find.

Radovan Garabík
quelle
0

Unter der Annahme, dass sich in cwd (aktuelles Arbeitsverzeichnis) alle übergeordneten Ordner befinden, können Sie Folgendes tun:

for i in *; do
    [[ -d "$i" ]] || continue
    rm -rf "$i"/*
done
  • Durchlaufen aller Verzeichnisse im aktuellen Ordner (dh der übergeordneten Ordner)
  • Entfernen Sie alle Dateien und Ordner in jedem Unterordner
Thomas Espe
quelle
1
Eek. Was wird Ihrer Meinung nach mit Dateinamen passieren, die Leerzeichen enthalten? Nicht analysierenls .
Muru
@muru - die Räume sind nicht wichtig. Der Wert von $IFSis und mehr sind die aktuellen -fEinstellungen für die Erzeugung von Dateinamen in der Shell . thomas - dein ding könnte auf ungewollte wege rennen.
mikeserv
mkdir 'files ..'zum Beispiel
Jeff Schaller
@muru - du hast recht ... ich hätte das sehen sollen. Ich habe die Antwort aktualisiert. Danke fürs bemerken.
Thomas Espe