Komplement einer Menge bilden mit Wildcards

Post Reply
Message
Author
felixxx
Posts: 2
Joined: 10. Jan 2007 19:17

Komplement einer Menge bilden mit Wildcards

#1 Post by felixxx »

Ich habe in einem Verzeichnis viele Dateien, darunter viele mit verschiedenen Dateiendungen (also .log, .tex, .toc, .ps, .pdf, .dvi, etc... ). Ich möchte alle Dateien löschen, nur nicht die *.tex Dateien. Gibt es dafür einen Befehl, der Wildcards benutzt? Also so etwas wie
rm ^{*.tex}
oder ähnliches?
Wer weiss darauf eine Antwort?

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#2 Post by Lateralus »

Notfalls so:

Code: Select all

#!/bin/sh
for file in *; do
  if [ "${file%%*.tex}" ]; then
    rm "$file"
  fi
done
Bitte vorher testen!

felixxx
Posts: 2
Joined: 10. Jan 2007 19:17

#3 Post by felixxx »

Danke,

was ich aber eigentlich erwartet habe, ist ein einzeiliger befehl, das muss doch irgendwie gehen, oder? wenn ich eine Menge angebe, also *.tex für alle latex-dateien, dann muss es doch möglich sein, diesen ausdruck zu negieren und somit die komplementmenge zu bezeichnen, weiss das jemand?

also so etwas wie rm neg(*.tex) ??

tom servo
Posts: 225
Joined: 01. Jun 2004 9:36

#4 Post by tom servo »

Code: Select all

rm `ls | grep -iv -e .tex -e .pdf`
Müsste funktionieren.... löscht alle nicht pdf- und tex-Dateien. Der Code sieht aber ziemlich grausam aus. ;-)

Edit: Falls du wie ich, latex mit einem Makefle klöppelst, sollte da vermutlich noch .jpg .png usw mit rein. :D

cu
Last edited by tom servo on 11. Jan 2007 11:31, edited 1 time in total.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#5 Post by Janka »

Code: Select all

$ man find
...
$ find -not -name '*.tex' -exec rm {} \;
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Post Reply