On Mon, Jul 27, 2009 at 05:58:14PM +0000, Luis Tabera wrote: > > > > --- El lun, 27/7/09, Gorka <[email protected]> escribió: > > > De: Gorka <[email protected]> > > Asunto: Problema con los comandos del bash > > Para: [email protected] > > 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 / \ -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

