[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: