Ergebnis 1 bis 5 von 5
  1. #1
    Schö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?

  2. #2
    Galloway Pepping Avatar von fyysh
    Registriert
    01.2010
    Ort
    Rheinknie
    Alter
    33
    Beiträge
    1.347
    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.
    The cause of the problem is:
    Don't worry; it's been deprecated.
    The new one is worse.

  3. #3
    Schö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?

  4. #4
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.954
    Code:
    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)

  5. #5
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324
    Zitat Zitat von Rastafari Beitrag anzeigen
    Code:
    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 \;;
    Danke, der Befehl funktioniert bestens! Die Bonobos sind gerettet.

    Gruss dawiinci

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •