Duda con script vinculado a "rm -R"

Programacion en Bash

Moderadores: frank, dxfiles

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Duda con script vinculado a "rm -R"

Mensaje por KZKG^Gaara » Jue, 10 Feb 2011, 15:49

Buenas,
Necesito eliminar todos los archivos de la carpeta ".Trash/cur" de cada buzón de usuarios. La ubicación de estas carpetas es:
/home/vmail/midominio.com/$USER/.Trash/cur

El problema está en $USER, dentro de "/home/vmail/midominio.com/" hay unos 500 directorios, dentro de cada directorio entonces está ".Trash/cur"

Bien, necesitaría un método para que me borre todos los archivos ubicados en "/home/vmail/midominio.com/$USER/.Trash/cur", independientemente de quién sea $USER

Eso sería todo.
Encontré un método bastante rudimentario, listando yo manualmente lo existente en "/home/vmail/midominio.com/", luego en un script pongo:
rm-R/home/vmail/midominio.com/adri/.Trash/cur/*
rm-R/home/vmail/midominio.com/adriana90/.Trash/cur/*
rm-R/home/vmail/midominio.com/alberto/.Trash/cur/*
rm-R/home/vmail/midominio.com/alejandra/.Trash/cur/*

---- etc -----

Pero, cuando se añada un nuevo usuario, y se añada un nuevo directorio a "/home/vmail/midominio.com/", tendría que añadir yo manualmente una línea al script, poniendo:
rm-R/home/vmail/midominio.com/NOMBRE-DE-USUARIO-NUEVO/.Trash/cur/*

Y así cada vez que se añada un usuario nuevo.

Espero alguien me pueda ayudar.
Saludos y gracias por adelantado.
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Avatar de Usuario
yosle
Mensajes: 110
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/sbin/yosle
Contactar:

Re: Duda con script vinculado a "rm -R"

Mensaje por yosle » Jue, 10 Feb 2011, 17:08

Con un poco de la magia de las rutas relativas : ;)

Código: Seleccionar todo

rm -R /home/vmail/midominio.com/*/.Trash/cur/* 
eso borra todos los archivos de la carpeta cur (independientemente de la del usuario) y si cabe la posibilidad de que tenga carpetas dentro , usa la opcion -R


Espero que te sirva.La probe al vuelo aca y funciona perfecto. :mrgreen:

saludos , Yosle

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Re: Duda con script vinculado a "rm -R"

Mensaje por KZKG^Gaara » Vie, 11 Feb 2011, 09:39

yosle escribió:Con un poco de la magia de las rutas relativas : ;)

Código: Seleccionar todo

rm -R /home/vmail/midominio.com/*/.Trash/cur/* 
eso borra todos los archivos de la carpeta cur (independientemente de la del usuario) y si cabe la posibilidad de que tenga carpetas dentro , usa la opcion -R


Espero que te sirva.La probe al vuelo aca y funciona perfecto. :mrgreen:

saludos , Yosle
Joder ..... :oops: :oops: qué fácil, y a la cara... y no me di cuenta :roll: :roll:
Ya estaba pensando en hacer un script con bucles, y montones de cosas...

jeje, thanks socio. :lol:
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Avatar de Usuario
yosle
Mensajes: 110
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/sbin/yosle
Contactar:

Re: Duda con script vinculado a "rm -R"

Mensaje por yosle » Vie, 11 Feb 2011, 11:26

KZKG^Gaara escribió: Joder ..... :oops: :oops: qué fácil, y a la cara... y no me di cuenta :roll: :roll:
Ya estaba pensando en hacer un script con bucles, y montones de cosas...

jeje, thanks socio. :lol:
:lol: jaja, no te sientas mal..porque.....Eso mas o menos iba a hacer yo!!! :mrgreen: , hacer un find que devolviera la ruta a todas las carpetas después con grep pasearlas y hacer el rm al final , hice unas carpetas de prueba para el script y asi fue como "descubri" lo de intercalar el * ...curioso ehh? :mrgreen:

Avatar de Usuario
Mainser
Mensajes: 13
Registrado: Mié, 12 Ene 2011, 12:42

Re: Duda con script vinculado a "rm -R"

Mensaje por Mainser » Mié, 02 Mar 2011, 17:08

Yo tengo una duda con algo similar, la diferencia está en que son cientos de directorios y cada uno de ellos contiene una X cantidad de subdirectorios, es un repositorio de libros electrónicos para las carreras universitarias.

La ventaja es que tienen un mismo patrón de archivos a borrar, que obtengo al descargar con el wget y la opción --mirror:

Por ejemplo, los directorios contienen algo como esto:

Código: Seleccionar todo

index.html?C=M;O=A
index.html?C=M;O=D
los puedo borrar así:

Código: Seleccionar todo

rm -R  index.html*
Pero no puedo hacer que entra a las carpetas (recursivamente) y los borre todos, ya intenté hacer un ls+ filtrar+rm -R etc... pero no me funcionó (o se me fueron las pilas porque estoy hasta el cuello con el trabajo).

Si tienen alguna sugerencia me vendría bien, porque está de ostias ir borrándolos directorio por directorio :shock: y el autoindex me saca todo lo que hay ;)

PD: Uso el wget con esta opción porque el rsync no pincha para lo que quiero hacer OK.

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Duda con script vinculado a "rm -R"

Mensaje por hugo » Jue, 03 Mar 2011, 03:54

Mainser escribió:Yo tengo una duda con algo similar [...] tienen un mismo patrón de archivos a borrar, que obtengo al descargar con el wget y la opción --mirror:

Por ejemplo, los directorios contienen algo como esto:

Código: Seleccionar todo

index.html?C=M;O=A
index.html?C=M;O=D
Para eso probablemente sea más eficiente usar la funcionalidad del propio wget:

Código: Seleccionar todo

wget --reject "index.html?*" --mirror --convert-links ...
o también:

Código: Seleccionar todo

wget -R "index.html?*" -m -k ...
Así incluso te ahorras la descarga de los archivos que no desees.
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

Avatar de Usuario
Mainser
Mensajes: 13
Registrado: Mié, 12 Ene 2011, 12:42

Re: Duda con script vinculado a "rm -R"

Mensaje por Mainser » Vie, 04 Mar 2011, 13:32

Saludos Hugo, mil disculpas mano, al parecer no me hice entender, lo que me dices lo tengo claro, eso lo uso cuando no quiero descargar algo con determinada extensión o ignorar algunos archivos (como los dichosos Thumbs.db y otros.... grrrr), pero eso no es lo que quiero hacer, te explico:

Ya descargué el repo de libros completo, ahora lo que quiero hacer es borrar recursivamente todos los archivos con esta máscara index.html* que están dentro de esos directorios. Estos archivos no forman parte del repo de libros original, los hace (localmente) el wget a la hora de descargar porque los utiliza para poder descargar todo lo que hay en los directorios, de aquí obtiene las URLs de los archivos y es por eso que no hay que dárselas una por una, además las usa cuando se quiere sincronizar para hacer las comparaciones y solo descargar lo nuevo e ignorar lo que se descargó ya.

Resumiendo, lo que quiero es borrar recursivamente estos archivos de todos los directorios en cuestión:

Código: Seleccionar todo

index.html
index.html?C=D;O=A
index.html?C=D;O=D
index.html?C=M;O=A
index.html?C=M;O=D
index.html?C=N;O=A
index.html?C=N;O=D
index.html?C=S;O=A
index.html?C=S;O=D
saludos.........

H.H

Avatar de Usuario
yosle
Mensajes: 110
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/sbin/yosle
Contactar:

Re: Duda con script vinculado a "rm -R"

Mensaje por yosle » Vie, 04 Mar 2011, 16:52

Resumiendo, lo que quiero es borrar recursivamente estos archivos de todos los directorios en cuestión:

sencillo...pero con el comando find , por eso creo que esto debería ser otro hilo ;)

Código: Seleccionar todo

 find /ruta/donde/esta/la/carpeta -name "*.html*" -exec rm {} \;
Editado :

Código: Seleccionar todo

 find /ruta/donde/esta/la/carpeta -name "*.html*" | xargs rm
este es mejor solucion porque en ver de crear un proceso hijo rm por cada ocurrencia de find , usa un solo proceso y es mucho mas eficiente, por ejemplo comparando los tiempos de ejecucion de los 2 comandos

con -exec
real 0m9.883s
user 0m3.340s
sys 0m5.900s
con xargs
real 0m0.677s
user 0m0.380s
sys 0m0.310s

Como supongo que trabajas con cientos o decenas de directorios puede mejorar considerablemente el rendimiento



Saludos , yosle

Avatar de Usuario
Mainser
Mensajes: 13
Registrado: Mié, 12 Ene 2011, 12:42

(Solucionado) Eliminar recirsivamente con "rm -R"

Mensaje por Mainser » Vie, 11 Mar 2011, 10:36

Perfecto chama, muchas gracias. Esa era la solución que buscaba, lo hice y pinchó OK.

No inicié otro tema porque pensé que la solución estaría en el uso del RM, pero la idea que das me gustó más :)

saludos........

H.H

Avatar de Usuario
yosle
Mensajes: 110
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/sbin/yosle
Contactar:

Re: (Solucionado) Eliminar recirsivamente con "rm -R"

Mensaje por yosle » Vie, 11 Mar 2011, 16:57

Mainser escribió:Perfecto chama, muchas gracias. Esa era la solución que buscaba, lo hice y pinchó OK.

No inicié otro tema porque pensé que la solución estaría en el uso del RM, pero la idea que das me gustó más :)

saludos........

H.H

Me alegro que te haya servido .

Responder