Page 1 of 1
Komplement einer Menge bilden mit Wildcards
Posted: 10. Jan 2007 19:26
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?
Posted: 11. Jan 2007 0:08
by Lateralus
Notfalls so:
Code: Select all
#!/bin/sh
for file in *; do
if [ "${file%%*.tex}" ]; then
rm "$file"
fi
done
Bitte vorher testen!
Posted: 11. Jan 2007 9:51
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) ??
Posted: 11. Jan 2007 11:24
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.
cu
Posted: 11. Jan 2007 11:27
by Janka
Code: Select all
$ man find
...
$ find -not -name '*.tex' -exec rm {} \;
Janka