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.
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 Zeichen kette , sondern eine Zeichen menge 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
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
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