bash:alle Dateien löschen,die nicht auf .tex enden

Von: , Frage gestellt am Mi, 13. Feb 2008
Hi,

wie kann ich in der Konsole Dateien löschen, die nicht eine bestimmte Endung haben?
Mein Ansatz lautete
$ rm *[!tex]
, was auch prinzipiell funktioniert; allerdings werden so Dateien mit der Endung .aux und .toc auch nicht gelöscht.

Nun noch die Masterfrage: Warum funktioniert
$ rm *.[!tex]
nicht, sondern bricht mit der Fehlermeldung
rm: Entfernen von „*.[tex]“ nicht möglich: Datei oder Verzeichnis nicht gefunden
ab?

Danke und Gruß,
V.

4 Antworten zu dieser Frage

  1. Antwort von (abgemeldet) nach einer Stunde 0 hilfreich
    Re: bash:alle Dateien löschen,die nicht auf .tex e
    Hi! Nun noch die Masterfrage: Warum funktioniert
    $ rm
    *.[!tex]
    nicht, sondern bricht mit der
    Fehlermeldung
    rm: Entfernen von „*.[tex]“ nicht
    möglich: Datei oder Verzeichnis nicht gefunden
    ab?
    Weil in den eckigen Klammern keine Zeichenkette, sondern eine Zeichenmenge steht. Und Du hast offensichtlich keine Dateien, die auf ".t", ".e" oder ".x" enden - zum Glück, denn die wären jetzt weg. "[tex]" (oder "[etx]") steht für genau ein Zeichen, das ein "x", "e" oder ein "t" sein kann.

    Major
  2. Antwort von nach 3 Stunden 0 hilfreich
    Re: bash:alle Dateien löschen,die nicht auf .tex e
    Hi Vladimir
    wie kann ich in der Konsole Dateien löschen, die nicht eine
    bestimmte Endung haben?
    Mein Ansatz lautete
    $ rm *[!tex]
    , was auch prinzipiell
    funktioniert; allerdings werden so Dateien mit der Endung .aux
    und .toc auch nicht gelöscht.
    warum das nicht funktionieren kann, wurde in der ersten antwort schon erläutert. so aus dem bauch sollte
    $ rm `ls | grep -e "tex$"`

    funktionieren, aber es gibt bestimmt wesentlich elegantere ansätze.

    HTH und Gruss
    Sam
    • Antwort von (abgemeldet) nach 3 Stunden 0 hilfreich
      Re^2: bash:alle Dateien löschen,die nicht auf .tex
      so aus dem bauch sollte
      $ rm `ls | grep -e "tex$"`

      funktionieren,
      Nicht, dass ich kleinlich erscheinen will. Aber hier fehlt die Negation, $ rm `ls | grep -v -e "tex$"` dürfte der ursprünglichen Intention näherkommen.

      Gruss
      Schorsch
      • Antwort von nach 2 Tagen 0 hilfreich
        Re^3: bash:alle Dateien löschen,die nicht auf .tex
        Nicht, dass ich kleinlich erscheinen will. Aber hier fehlt die
        Negation, $ rm `ls | grep -v -e "tex$"` dürfte der
        ursprünglichen Intention näherkommen.
        oops:)

        Dankeschön und Gruss
        Sam
Keine passende Antwort gefunden? Jetzt eigene Frage stellen!