• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Eine überwältigende Zahl von Einsendungen wartet nun auf Euch, um begutachtet zu werden! Schaut selbst, welche Blüten das Thema hervorgebracht hat und stimmt dann ab, was davon Euch am besten gefällt. Hier geht es lang zur Abstimmung --> Klick

alle Ordner und Dateien löschen (mit Ausnahme)

  • Ersteller Benutzer 62153
  • Erstellt am

Benutzer 62153

Gast
Ich möchte gerne alles innerhalb eines Ordners löschen, allerdings - falls vorhanden - soll ein Ordner bestehen bleiben. Bisher mache ich es mit rm -rf. Damit werden alle Unterordner gelöscht. Wie kann ich einen Ordner namens XYZ-Ordner ausschliessen?
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Mir fällt so auf die Schnelle ein:

Entweder mit find...
find PFAD -maxdepth 1 -not -name 'XYZ' -exec rm -rv {} \;

Oder du kannst auch mit RegExp...
rm -rv [^X]* würde alles löschen, außer was mit X anfängt. Kann man natürlich erweitern.

Edit:
Vorsicht: rm -rv [^XYZ]* ignoriert nicht den Ordner "XYZ", sondern jeden Ordner, der entweder mit X, mit Y oder mit Z anfängt.
 

Benutzer 62153

Gast
Der erste Befehl geht leider nicht, da der obere Ordner gelöscht wird.

In diesem Beispiel soll Ordner 4 inkl. dessen Inhalt Datei 2 erhalten bleiben. Das heisst natürlich auch, dass Ordner DEL und Ordner 2 nicht gelöscht werden soll, sondern nur der Inhalt ausser Ordner 4 (z.B auch Datei 3). Theoretisch könnten die Ordner auch noch weiter verschachtelt sein. Wichtig ist einfach, sobald der Ordnername auftaucht darf nicht weiter rekursiv gelöscht werden. Trotzdem, alle andern Ordner und Dateien sollen weg. Im Falle, dass der Ordner nicht existiert ist der ganze Ordner DEL weg.

Wichtiger Ordner 1
- Ordner DEL
-- Ordner 1
.. Ordner 2
--- Ordner 4
---- Datei 2

--- Ordner 5
--- Datei 3
-- Datei 1



Den zweiten Befehl verstehe ich nicht. Was macht die Option -rv und wo gebe ich den Pfad an? Könnte ich dort auch ganze Strings angeben?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Code:
[SIZE="-2"]ort="/Irgendwo/im Tierpark/am Affengehege";
habitat="Bonobos";

find -dx "${ort}" -not -type d -not -ipath "*/${habitat}/*" -delete;
find -dx "${ort}" -type d -not -ipath "*/${habitat}/*" -not -iname "${habitat}" -exec rmdir {} 2>/dev/null \;;[/SIZE]
 
Zuletzt bearbeitet:

Benutzer 62153

Gast
Code:
[SIZE="-2"]ort="/Irgendwo/im Tierpark/am Affengehege";
habitat="Bonobos";

find -dx "${ort}" -not -type d -not -ipath "*/${habitat}/*" -delete;
find -dx "${ort}" -type d -not -ipath "*/${habitat}/*" -not -iname "${habitat}" -exec rmdir {} 2>/dev/null \;;[/SIZE]

Danke, der Befehl funktioniert bestens! Die Bonobos sind gerettet. ;)

Gruss dawiinci