Tengo un directorio con una gran cantidad de archivos y quiero mover una selección de ellos que tienen un texto que es común para el grupo que deseo mover.
Con egrep 'TEXTO COMUN' logro saber que archivos son, pero no se como hacer el comando mv usando como referencia la salida del comando egrep para mover solo aquellos que me da que tienen el TEXTO COMUN.
Alguna ayuda en Shell Scripting Anavazado d;-)
Saludos, David
Si ya sabes que archivos son, puedes hacer lo siguiente:
for mis_archivos in $(ls | egrep "TEXTO COMUN") do mv mis_archivos destino done
Remplaza tu destino hacia el path adonde quieres mover los archivos.
Date: Mon, 30 Sep 2013 12:45:48 -0400 From: dgrvedado@gmail.com To: centos-es@centos.org Subject: [CentOS-es] Un de Shell
Tengo un directorio con una gran cantidad de archivos y quiero mover una selección de ellos que tienen un texto que es común para el grupo que deseo mover.
Con egrep 'TEXTO COMUN' logro saber que archivos son, pero no se como hacer el comando mv usando como referencia la salida del comando egrep para mover solo aquellos que me da que tienen el TEXTO COMUN.
Alguna ayuda en Shell Scripting Anavazado d;-)
Saludos, David _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
Al final hice así
#!/bin/sh
for tigos in $(egrep 'To: 098' *|cut -d. -f1) do mv tigos /var/spool/sms/tigo done
Porque con egrep solamente me daba una linea salida así: nombre.sms: To: 098
Entonces solo solo necesito usar los nombres de los archivos. Segundo problemas En el nombre del archivo existen los caracteres ":" repetidas veces Ej: XXXXXX-X_2013-09-30:8:50:43.sms
Entonces la idea con cut que lo logro super bien es establecer con -d el caracter que separa las columnas, en este caso el . y luego la idea era poner dentro del do .. done algo así
mv tigos /var/spool/sms/tigo
Situación: tigos no tiene los .sms de la extencion, por ende pense que si hacia
mv tigos.sms /var/spool/sms/tigo
Se moverian, pero nada...
Ilustración?
Saludos, David
El 30 de septiembre de 2013 12:53, Luis Terrel cantrells_@hotmail.comescribió:
Si ya sabes que archivos son, puedes hacer lo siguiente:
for mis_archivos in $(ls | egrep "TEXTO COMUN") do mv mis_archivos destino done
Remplaza tu destino hacia el path adonde quieres mover los archivos.
Date: Mon, 30 Sep 2013 12:45:48 -0400 From: dgrvedado@gmail.com To: centos-es@centos.org Subject: [CentOS-es] Un de Shell
Tengo un directorio con una gran cantidad de archivos y quiero mover una selección de ellos que tienen un texto que es común para el grupo que
deseo
mover.
Con egrep 'TEXTO COMUN' logro saber que archivos son, pero no se como
hacer
el comando mv usando como referencia la salida del comando egrep para
mover
solo aquellos que me da que tienen el TEXTO COMUN.
Alguna ayuda en Shell Scripting Anavazado d;-)
Saludos, David _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
Solución
En el do ... done habia que usar $tigos...
Saludos, David
El 30 de septiembre de 2013 14:49, David González Romero < dgrvedado@gmail.com> escribió:
Al final hice así
#!/bin/sh
for tigos in $(egrep 'To: 098' *|cut -d. -f1) do mv tigos /var/spool/sms/tigo done
Porque con egrep solamente me daba una linea salida así: nombre.sms: To: 098
Entonces solo solo necesito usar los nombres de los archivos. Segundo problemas En el nombre del archivo existen los caracteres ":" repetidas veces Ej: XXXXXX-X_2013-09-30:8:50:43.sms
Entonces la idea con cut que lo logro super bien es establecer con -d el caracter que separa las columnas, en este caso el . y luego la idea era poner dentro del do .. done algo así
mv tigos /var/spool/sms/tigo
Situación: tigos no tiene los .sms de la extencion, por ende pense que si hacia
mv tigos.sms /var/spool/sms/tigo
Se moverian, pero nada...
Ilustración?
Saludos, David
El 30 de septiembre de 2013 12:53, Luis Terrel cantrells_@hotmail.comescribió:
Si ya sabes que archivos son, puedes hacer lo siguiente:
for mis_archivos in $(ls | egrep "TEXTO COMUN") do mv mis_archivos destino done
Remplaza tu destino hacia el path adonde quieres mover los archivos.
Date: Mon, 30 Sep 2013 12:45:48 -0400 From: dgrvedado@gmail.com To: centos-es@centos.org Subject: [CentOS-es] Un de Shell
Tengo un directorio con una gran cantidad de archivos y quiero mover una selección de ellos que tienen un texto que es común para el grupo que
deseo
mover.
Con egrep 'TEXTO COMUN' logro saber que archivos son, pero no se como
hacer
el comando mv usando como referencia la salida del comando egrep para
mover
solo aquellos que me da que tienen el TEXTO COMUN.
Alguna ayuda en Shell Scripting Anavazado d;-)
Saludos, David _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
Una opción interesante de grep es "grep -l" (ele)
En vez de mostrar el contenido que hace match te muesta la ruta del fichero donde ha encontrado la cadena:
for i in `grep -l cadena *`; do mv $i /ruta/destino; done
Saludos.