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?
Komplement einer Menge bilden mit Wildcards
Notfalls so:
Bitte vorher testen!
Code: Select all
#!/bin/sh
for file in *; do
if [ "${file%%*.tex}" ]; then
rm "$file"
fi
done
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) ??
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) ??
Code: Select all
rm `ls | grep -iv -e .tex -e .pdf`
Edit: Falls du wie ich, latex mit einem Makefle klöppelst, sollte da vermutlich noch .jpg .png usw mit rein.
cu
Last edited by tom servo on 11. Jan 2007 11:31, edited 1 time in total.
Code: Select all
$ man find
...
$ find -not -name '*.tex' -exec rm {} \;
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.