Re: Problema con los comandos del bash
On Mon, Jul 27, 2009 at 05:58:14PM +0000, Luis Tabera wrote:
>
>
>
> --- El lun, 27/7/09, Gorka <gorkalinux@yahoo.es> escribió:
>
> > De: Gorka <gorkalinux@yahoo.es>
> > Asunto: Problema con los comandos del bash
> > Para: debian-user-spanish@lists.debian.org
> > Fecha: lunes, 27 julio, 2009 7:38
> > Quiero mover los mails que contengan
> > cierta palabra a otra carpeta. Para
> > ello he llegado hasta el siguiente comando,
> >
> > grep ***SPAM*** * | sed 's/miservidor.*$//'
> >
> > Que me da los emails que yo quiero. Sólo me faltaría
> > completar los nombres
> > de los mails con * y hacer el mv, pero no sé cómo hacerlo
> > en una única
> > línea, porque si hago,
> >
> > mv (grep ***SPAM*** * | sed 's/miservidor.*$//')* ../spam/
> >
> > Me da error.
> > También he pensado en un script tipo:
> >
> > #!/bin/bash
> > for i in grep $1 *;
> > do sed 's/miservidor.*$//' $i | mv $i ../spam;
> > done
> >
> > Al que se le pase ‘***SPAM***’ como parámetro, pero no
> > doy con la forma
> > correcta de hacerlo. Me da error también.
> >
> > Una ayudita, por favor.
> >
>
> El problema aqui es que te devolvera una lista ?No funcionaria algo similar a?
>
> for i in $(grep ***SPAM*** *| sed 's/miservidor.*$//'); do mv $i* ../spam done
>
> Ojo que no estoy completamente seguro que el $i* sea correcto
>
Pues no, no está bien para lo que el quiere hacer.. pues el '$i*'
movería todos aquellos que llevasen $i como comienzo. Es decir:
correo1.txt, correo2.txt, correo13.txt .. etc
Si 'correo1.txt' contiene '***SPAM***' moverá, tanto 'correo1.txt'
como 'correo13.txt' a '../spam', con el problema de que si
'correo13.txt' no contiene '***SPAM***' será igualmente movido.
--
Porqué loitar e matar, se podes amar e sonhar
/"\
\ / CAMPANHA DA FITA ASCII - CONTRA MAIL HTML
X ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL
/ \
Reply to: