• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Ordnerebene löschen ohne die Inhalte zu entfernen

Ich habe einen Ordner(1) mit vielen Unterordnern(a,b,c, usw.). Nun möchte ich die Unterordner löschen, ohne dabei die in ihnen liegenden Dateien zu entfernen.
Am Ende sollen alle Dateien im Ordner (1) liegen und die Unterordner (a,b, c, usw.) gelöscht sein.

Gibt es für diesen Vorgang einen Konsolenbefehl? Wenn ja, wo finde ich den bzw. wie lautet der.

Danke im voraus.


.
 

framp

Moderator
Teammitglied
Disclaimer:
Wie immer gilt bei solchen Aktionen: Teste ausgiebig - noch besser - habe ein Backup ;)

Annahmen:
1) Du befindest Dich im Ordner (1)
2) Keine der Dateien der Unterordner a, b, c heissen gleich

Schritte:
Zerlegen des Problems in zwei Schritte: Moven der Dateien und Loeschen der Verzeichnisse.
1)
Code:
find . -type f -exec echo "mv {} ." \;
zeigt Dir alle Dateien an die ins aktuelle Verzeichnis gemoved werden wuerden.
Wenn das alles OK ist
2)
Code:
find . -type f -exec mv {} . \;
Danach befinden sich alle Dateien im aktuellen Verzeichnis.
3)
Code:
find . -type d -exec "echo rmdir {}" \;
zeigt Dir alle Unterverzeichniss an die geloescht werden wuerden.
Wenn das alles OK ist
Code:
find . -type d -exec rmdir {} \;

Man kann das Ganze natuerlich noch so machen dass man erst einmal die Dateien der Unterverzeichnisse kopiert und nicht loescht, dann testet ob sich alle Dateien aus den Unterverzeichnissen im aktuellen Verzeichnis befinden und dann die Unterverzeichnisse mit all ihren Dateien loeschen. Ist aber aufwaendiger und die Frage ist ob sich diese Aktion lohnt da das vermutlich nur ein one time shot ist.
 
Oben