Re: script gesucht
Am Montag, 25. Oktober 2004 16:26 schrieb Matthias Houdek:
> Am Sonntag, 24. Oktober 2004 17:58 schrieb Andreas Pakulat:
> > On 24.Oct 2004 - 15:28:01, Matthias Houdek wrote:
> > > Am Sonntag, 24. Oktober 2004 13:41 schrieb Andreas Pakulat:
> > > > On 24.Oct 2004 - 10:49:20, Matthias Houdek wrote:
> > > > Hast du das getestet? Das klappt naemlich nicht. Dabei wird
> > > > eine leere Datei erzeugt!
> > >
> > > Klappt bei mir wunderbar. Hab's gerade noch mal in die
> > > Kommandozeile kopiert - und es klappte wieder.
> >
> > In einer bash? In sid? Bei mir nicht. Man moege micht
> > erleuchten:
>
> Bei mir läuft sarge. Dürfte aber egal sein.
_Kann_ laufen, muss aber nicht. Der Ansatz ist gefährlich (hängt
AFAIK vor allem davon ab, wie groß die Buffer für Pipes usw. im
System sind und ob der Filedescriptor für den read() noch offen
ist, wenn der für write() aufgemacht wird).
Aber natürlich geht sowas mit der bash auch sauber (1 Zeile):
find . -type f -printf "tail +2 \"%p\" >\"%p.neu\" && mv -i
\"%p.neu\" \"%p\"\n" | sh
Einziges Ungemach: eine evtl. existierende Datei <Dateiname.neu>
würde dazu führen, dass mv nachfragt, ob sie überschrieben werden
soll (was man verhindern kann, wenn man statt %p.neu einen
definitiv nicht existierenden konstanten Dateinamen - z. B. in /tmp
- vergibt).
Und hier mal ein kleines Testszenario:
jan@jack:~/tmp/t> mkdir a b c
jan@jack:~/tmp/t> echo -e "Zeile1\nZeile2\nZeile3" >f
jan@jack:~/tmp/t> cp f "a/f leer"
jan@jack:~/tmp/t> cp f "b/f tab"
jan@jack:~/tmp/t> cp f "c/ü b e l"
jan@jack:~/tmp/t> for i in `seq 1 1000`; do echo "zeile$i"
>>gross;done
jan@jack:~/tmp/t> find . -type f -printf "tail +2 \"%p\" >\"%p.neu\"
&& mv \"%p.neu\" \"%p\"\n" | sh
jan@jack:~/tmp/t> find . -type f -exec head \-n 1 {} \;
Zeile2
Zeile2
Zeile2
Zeile2
zeile2
Jan
P.S.: Matthias - David liest hier nicht mit, falsche Liste ;-)
--
Linux-Quickies: http://www.jan-trippler.de
PingoS: http://www.pingos.org
Reply to: