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.
Ergebnis 1 bis 5 von 5
- 26.02.2011, 18:01 #1Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
alle Ordner und Dateien löschen (mit Ausnahme)
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?
- 26.02.2011, 20:54 #2The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 26.02.2011, 21:47 #3Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
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?
- 27.02.2011, 11:49 #4Code:
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 \;;Geändert von Rastafari (27.02.2011 um 12:11 Uhr)
- 27.02.2011, 13:23 #5Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324


Zitieren


