Alle Dateien löschen, aber nicht die Verzeichnisse

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von hansi1279, 23.02.2007.

  1. #1 hansi1279, 23.02.2007
    hansi1279

    hansi1279 Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,

    könnt Ihr mir helfen, wie ich alle Dateien, auch Systemdateien (.profile, usw) auf einen Schlag löschen kann. Dabei darf die Verzeichnisstruktur nicht geändert werden.
    Es ist für mich umständlich alle Files einzel zu löschen. Ich wäre dankbar für ein Beispiel.

    Danke im voraus

    hansi
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Code:
    find ./ !-type d -exec rm {} \;
    
    loescht alle nicht-Verzeichniss.
     
  4. #3 Wolfgang, 23.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Code:
    find /path -type f  |xargs rm -f
    Falls es zu viele Dateien sind.
    @rikola man kann auch positiv finden gelle. ;)

    Gruß Wolfgang
     
  5. #4 x-lette, 23.02.2007
    x-lette

    x-lette Mitglied

    Dabei seit:
    23.04.2006
    Beiträge:
    44
    Zustimmungen:
    0
    Ort:
    Berlin
    Ich behaupte mal (-type f) != (!-type d).
    Es gibt außer Files und Directories noch andere Typen, die find suchen oder ignorieren kann. Um exakt zu sein gibt es bei find noch fünf andere Typen:
    Code:
    b      gepufferte Gerätedatei für ein blockorientiertes Gerät
    c      ungepufferte Gerätedatei für ein zeichenorientiertes Gerät
    d      Verzeichnis
    p      benannte Pipeline (FiFo)
    f      normale Datei
    l      symbolischer Link
    s      Socket
    
     
  6. #5 Wolfgang, 24.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Und was willst du uns jetzt damit sagen?
    -type f ist kein Socked, kein symbolischer Link, keine benannte Pipeline (FiFo), kein Verzeichnis, kein ungepufferte Gerätedatei für ein zeichenorientiertes Gerät.

    :think:
    Also, Selektion erfolgreich.

    Gruß Wolfgang
     
  7. #6 hansi1279, 24.02.2007
    hansi1279

    hansi1279 Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hi

    Vielen Dank. Werde am Montag alles ausprobieren.
     
  8. #7 x-lette, 25.02.2007
    x-lette

    x-lette Mitglied

    Dabei seit:
    23.04.2006
    Beiträge:
    44
    Zustimmungen:
    0
    Ort:
    Berlin
    Gut erkannt! Glückwunsch. :))
    Falsch! :(

    Wenn ich das OT richtig interpretiere, geht es darum, in einer Verzeichnisstruktur alles außer den Verzeichnissen selbst zu löschen. Dies ist mit der Option !-type d korrekt gelöst, während dein Vorschlag lediglich alle normalen Dateien löscht. Da ich jetzt nicht ausschließen kann, daß eventuell auch eine pipe oder ein symlink existiert, heißt das für mich, daß dein Vorschlag die Anforderung nicht erfüllt, da diese Dateien stehen bleiben würden.
    Positiv formuliert sollte das Kriterium für find also heißen "-type f -o -type b -o -type c -o -type p -o -type l -o -type s" was dann je nach tatsächlichem Vorkommen von Dateiarten wieder eingeschränkt werden kann. Aber darüber liegen nun mal keine Informationen vor.

    Gruß
    XL
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Die Verzeichnisstruktur könnte auch aus symbolischen Links bestehen ;)
     
  10. #9 Wolfgang, 25.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Darf ich mal das Subject zitieren:
    Danach geht es hier eindeutig um Dateien.
    Wie Xanti schon sagte, ist es durchaus möglich, dass Teile Der Verzeichnisstruktur aus Links bestehen!
    (-type f) != (!-type d) habe ich nicht bestritten, aber eben darum geht es ja nicht.

    Ok, belassen wir es dabei.

    Gruß Wolfgang
     
  11. #10 hansi1279, 26.02.2007
    hansi1279

    hansi1279 Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Geht leider nicht bei allen Dateien. Es kommt immer die folgende Meldung:

    bash: !-type: event not found
     
  12. #11 Wolfgang, 26.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Du hast das Leerzeichen vergessen.

    Code:
     find /path ! -type d
    Sei dir aber bewusst, dass auch Links die auf Verzeichnisse weisen gelöscht werden.
    Bei meinem Vorschlag werden wirklich nur Dateien gelöscht.

    Gruß Wolfgang
     
  13. #12 hansi1279, 26.02.2007
    hansi1279

    hansi1279 Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo

    Ich habe zum Bash gewechselt und es geht super. Natürlich mit find ./ !-type d -exec rm {} \;

    Will sicher sein, dass alle Dateien gelöscht werden.

    Besten Dank!
     
  14. #13 Wolfgang, 26.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    -type f löscht alle Dateien, aber eben nur Dateien.
    ! -type d löscht mehr. Nämlich alles was kein Verzeichnis ist.
    Du solltest dir schon im Klaren sein was du wills.
    Wenn du mir sagst, dass du alle Dateien löschen willst, komme ich immer wieder auf -type f.

    Das wollte ich nur mal anmerken.

    Gruß Wolfgang
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 hansi1279, 26.02.2007
    hansi1279

    hansi1279 Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Ist scho so dass ich alle Dateien löschen will. Mit -type f geht es nicht bei allen.

    Scheints funktioniert !-type d nicht überall. Das ! Zeichen hats nicht geklappt. Aber bei bash geht es gut.

    Danke
     
  17. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    [Kruemel kack]
    Laut Wikipedia ist alles Datei, unter Linux wie unter Unix. Da laut Titel alle Dateien ausser Verzeichnissen geloescht werden sollten, waeren wir doch wieder bei '! -type d', oder nicht?
    [/Kruemel kack]
     
Thema:

Alle Dateien löschen, aber nicht die Verzeichnisse

Die Seite wird geladen...

Alle Dateien löschen, aber nicht die Verzeichnisse - Ähnliche Themen

  1. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  2. Alle Textdateien eines Verzeichnisses mit Header ausstatten

    Alle Textdateien eines Verzeichnisses mit Header ausstatten: Hallo liebe Community. Ich soll ein Script schreiben, welches innerhalb von einem Verzeichnis alle .txt Dateien mit einer beliebigen ersten...
  3. Paralleles packen von Dateien

    Paralleles packen von Dateien: Sehr geehrte Dame und Herren, ich bin neu hier im forum deshalb begrüsse ich alle recht herzlich :). Ich habe ein Problem, ich habe auf...
  4. index.php funktioniert aber alle andere .php Dateien nicht

    index.php funktioniert aber alle andere .php Dateien nicht: Ich hab auf meinen Notebook apache2 installiert mit php5 und mysql. Ich hab das problem das er mit den php code nicht ausführt. Besser gesagt...
  5. Alle Dateien eines Ordners umbennenen

    Alle Dateien eines Ordners umbennenen: Hallo Forum, ich benutze einen Mac, allerdings möchte ich mir ein Shellskript basteln und habe allerdings keine Ahnung wie! Bin absolute neu in...