Página 1 de 3

Duda con script vinculado a "rm -R"

Publicado: Jue, 10 Feb 2011, 15:49
por KZKG^Gaara
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.

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

Publicado: Jue, 10 Feb 2011, 17:08
por yosle
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

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

Publicado: Vie, 11 Feb 2011, 09:39
por KZKG^Gaara
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:

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

Publicado: Vie, 11 Feb 2011, 11:26
por yosle
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:

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

Publicado: Mié, 02 Mar 2011, 17:08
por Mainser
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.

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

Publicado: Jue, 03 Mar 2011, 03:54
por hugo
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.

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

Publicado: Vie, 04 Mar 2011, 13:32
por Mainser
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

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

Publicado: Vie, 04 Mar 2011, 16:52
por yosle
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

(Solucionado) Eliminar recirsivamente con "rm -R"

Publicado: Vie, 11 Mar 2011, 10:36
por Mainser
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

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

Publicado: Vie, 11 Mar 2011, 16:57
por yosle
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 .