Re: Renombrar recursivamente

2004-03-04 Por tema Javier M Mora
Perdón, no me dí cuenta de que además de enviarmelo por privado habias
mandado a la lista. Por cierto, como leo la lista, no es necesario
enviar privados simultaneamente (así lo que se consigue es que lo
reciba duplicada y me dé más coraje B-(

El jue, 04 de mar de 2004, a las 12:15:43 +0100, Salva. dijo:
> Bueno, la cuestión era como renombrar recursivamente dentro de carpetas 
> ficheros tipo X.met.bak a X.met, donde X suele ser un numero.
> 

find -name '*bak' | rename 's/.bak$//'

> Tu técnica parece la más sencilla, pero ¿cómo haces para quitar parte de 
> la extensión o del nombre?
> 
> Oye, gracias a todos por las respuestas y pido disculpas porque no creo 
> que esto esté relacionado con Debian para nada. Por cierto, ¿Sabéis de 
> alguna lista donde se puedan hacer este tipo de preguntas?
> 

Las news de ecol: 
es.comp.os.linux.misc
es.comp.os.linux.programacion
es.comp.os.linux.instalacion
...


-- 
Javier Maria Mora Merchan
(GPGP) Key ID: 0x794F3D83



Re: Renombrar recursivamente

2004-03-03 Por tema Israel Herraiz Tabernero
El mié, 03-03-2004 a las 17:06, Salva escribió:
> Este no me ha funcionado !! el error es el siguiente
> 
>File "./renombra.py", line 10
>  os.system("cd "+str(directorio)+" && mv "+str(l)+"
>   ^
> SyntaxError: invalid token

¿Has puesto la línea completa?

Es ésta:

os.system("cd "+str(directorio)+" && mv "+str(l)+" "+str(l)+".bak")

Yo lo he probado y funciona.

-- 
/|\   Israel Herraiz <[EMAIL PROTECTED]> 
   /_|_\  Fingerprint: 1D08 6AB1 709D 37A2 0CFD
   \ | /   _   9733 CEE4 0EA0 6248 BA12
\|/   ( )  _._
 '.U .'_|_'.   
   '.   '.  |(o_   (o_   (o_  
{o_   (o_//\_.___  //|   //\  
(')_  (\)_   V_/_'oo'  V_|_  V__)_


signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada	digitalmente


Re: Renombrar recursivamente

2004-03-03 Por tema Salva.
Bueno, la cuestión era como renombrar recursivamente dentro de carpetas 
ficheros tipo X.met.bak a X.met, donde X suele ser un numero.


Tu técnica parece la más sencilla, pero ¿cómo haces para quitar parte de 
la extensión o del nombre?


Oye, gracias a todos por las respuestas y pido disculpas porque no creo 
que esto esté relacionado con Debian para nada. Por cierto, ¿Sabéis de 
alguna lista donde se puedan hacer este tipo de preguntas?


Salva

Javier M Mora escribió:

Los siento pero he llegado tarde al hilo y me he perdido el principio. 
Cuando yo quiero renombrar (o incluso mover) ficheros por varios

directorios utilizo la siguiente secuencia:

find [...]* | rename [...]**

donde:
[...]*  es la regla que determina los ficheros a renombrar
[...]** es la regla que indica el tipo de cambio de nombre a
realizar.

Así para añadir pepe a una colección de fotos:

find -name '*jpg' | rename '$_="pepe".$_'

para cambiar de MP3 a mp3 en las terminaciones:

find -name '*MP3' | rename 's/MP3$/mp3/'

etc.





Re: Renombrar recursivamente

2004-03-03 Por tema Salva.

Joder, y eso que lo había leído, no tengo perdón.

Gracias miguel, así funciona a la perfección !!
Bueno, gracias a todos.

Salva

Miguel Rodríguez Penabad escribió:

On Wednesday 03 March 2004 17:34, Salva wrote:


Creo que no le sientan bien los espacios... podría tener solución



...
Has probado poniendo las comillas dobles alrededor de $j, como indicaba aquí?
Eso debería solucionar el problema de los espacios.



mv "${j}" "`echo ${j} | sed 's/met.bak$/met/g'`"



Saludos
Miguel





Re: Renombrar recursivamente

2004-03-03 Por tema Javier M Mora
Los siento pero he llegado tarde al hilo y me he perdido el principio. 
Cuando yo quiero renombrar (o incluso mover) ficheros por varios
directorios utilizo la siguiente secuencia:

find [...]* | rename [...]**

donde:
[...]*  es la regla que determina los ficheros a renombrar
[...]** es la regla que indica el tipo de cambio de nombre a
realizar.

Así para añadir pepe a una colección de fotos:

find -name '*jpg' | rename '$_="pepe".$_'

para cambiar de MP3 a mp3 en las terminaciones:

find -name '*MP3' | rename 's/MP3$/mp3/'

etc.

-- 
Javier Maria Mora Merchan
(GPGP) Key ID: 0x794F3D83



Re: Renombrar recursivamente

2004-03-03 Por tema Miguel Rodríguez Penabad
On Wednesday 03 March 2004 17:34, Salva wrote:
> Creo que no le sientan bien los espacios... podría tener solución
>
...
Has probado poniendo las comillas dobles alrededor de $j, como indicaba aquí?
Eso debería solucionar el problema de los espacios.

> >  mv "${j}" "`echo ${j} | sed 's/met.bak$/met/g'`"

Saludos
Miguel

-- 

Miguel Rodriguez Penabad[EMAIL PROTECTED]
Laboratorio de Bases de Datos   http://emilia.dc.fi.udc.es/labBD
Despacho 0.01   Tel. 981 167000 ext. 1333
Facultade de InformáticaUniversidade da Coruña (Spain)




Re: Renombrar recursivamente

2004-03-03 Por tema Salva

Creo que no le sientan bien los espacios... podría tener solución

ls: temp/Desmontando/*.met.bak: No existe el fichero o el directorio
ls: a/*.met.bak: No existe el fichero o el directorio
ls: Harry/*.met.bak: No existe el fichero o el directorio
ls: [Woody/*.met.bak: No existe el fichero o el directorio
ls: Allen]/*.met.bak: No existe el fichero o el directorio
ls: Dual/*.met.bak: No existe el fichero o el directorio
ls: Spanish/*.met.bak: No existe el fichero o el directorio
ls: English/*.met.bak: No existe el fichero o el directorio
ls: [x/*.met.bak: No existe el fichero o el directorio

Gracias de todas formas !


[EMAIL PROTECTED] escribió:

Buena observacion Miguel, corrijo mi shell por esta otra:

for i in `find /tmp/pedro -type d`
do
for j in `ls -1 ${i}/*.met.bak`
do
mv ${j} `echo ${j} | awk -F'.met.' '{printf $1".met";}'`
done
done


Esto solo dara problemas si el propio nombre del fichero contien ".met.",
lo cual ya es bastante mas dificil que ocurra.

Gracias por la correccion.

Saludos y gracias.


   
  Miguel Rodríguez 
  Penabad  Para: debian-user-spanish@lists.debian.org  
  <[EMAIL PROTECTED]> cc: 
           Asunto:   Re: Renombrar recursivamente  
  27/02/2004 11:43 
   
   





On Friday 27 February 2004 10:38, [EMAIL PROTECTED] wrote:


Hola Salva, hazte un shell, del tipo:

for i in `find X -type d`
do
   for j in `ls -1 ${i}/*.met.bak`
   do
   mv ${j} `echo ${j} | awk -F'.' '{printf $1"."$2;}'`
   done
done


Esto te renombra de forma automatica y recursiva como tu quieres,
comenzando en el directorio X que tu le indiques.



Este sistema puede dar problemas si hay nombres con puntos, como
directorio.primero/fichero.que.quieres.cambiar.met.bak, o si hay espacios
en
los nombres (no sé exactamente como nombra los ficheros y directorios
overnet)
yo haría
 mv "${j}" "`echo ${j} | sed 's/met.bak$/met/g'`"


--

Miguel Rodriguez Penabad [EMAIL PROTECTED]
Laboratorio de Bases de Datos
http://emilia.dc.fi.udc.es/labBD
Despacho 0.01Tel. 981
167000 ext. 1333
Facultade de Informática Universidade da Coruña
(Spain)



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact
[EMAIL PROTECTED]











Re: Renombrar recursivamente

2004-03-03 Por tema Salva

Este no me ha funcionado !! el error es el siguiente

  File "./renombra.py", line 10
os.system("cd "+str(directorio)+" && mv "+str(l)+"
 ^
SyntaxError: invalid token

Gracias de todas formas

Israel Herraiz Tabernero escribió:

El jue, 26-02-2004 a las 21:01, Salva. escribió:

¿Sabéis si hay algún programa que renombre recursivamente dentro de los 
directorios?



Python es tu amigo:

#!/usr/bin/env python
import os

def renombraDir(directorio):
lista_met = [x for x in os.listdir(directorio) if x.find(".met") is not 
-1 and not os.path.isdir(x)]
i = 0
for l in lista_met:
print "Moviendo "+str(l)+" a "+str(l)+".bak"
os.system("cd "+str(directorio)+" && mv "+str(l)+" 
"+str(l)+".bak")
i = i + 1
 
print "***"

print str(i)+" archivos renombrados en el directorio "+str(directorio)
print "***"
 
def recorreDirectorios(directorio_padre):

lista_dir = [x for x in os.listdir(directorio_padre) if 
os.path.isdir(x)]
 
for l in lista_dir:

renombraDir(l)
 
if __name__ == "__main__":

recorreDirectorios(".")
# Fin de programa

Copia y pega el programa en un archivo, por ejemplo renombra_met.py,
después dale permisos de ejecución (chmod a+x renombra_met.py), y
ejecútalo en el directorio que quieras:

cp renombra_met.py directorio
cd directorio
./renombra_met.py

Por cierto, de nada ;-)




Re: Renombrar recursivamente

2004-02-27 Por tema pagonzalez

Buena observacion Miguel, corrijo mi shell por esta otra:

for i in `find /tmp/pedro -type d`
do
for j in `ls -1 ${i}/*.met.bak`
do
mv ${j} `echo ${j} | awk -F'.met.' '{printf $1".met";}'`
done
done


Esto solo dara problemas si el propio nombre del fichero contien ".met.",
lo cual ya es bastante mas dificil que ocurra.

Gracias por la correccion.

Saludos y gracias.



   
  Miguel Rodríguez  
   
  Penabad  Para: 
debian-user-spanish@lists.debian.org  
  <[EMAIL PROTECTED]> cc:   
  
               Asunto:   Re: Renombrar 
recursivamente  
  27/02/2004 11:43  
   

   

   




On Friday 27 February 2004 10:38, [EMAIL PROTECTED] wrote:
> Hola Salva, hazte un shell, del tipo:
>
> for i in `find X -type d`
> do
> for j in `ls -1 ${i}/*.met.bak`
> do
> mv ${j} `echo ${j} | awk -F'.' '{printf $1"."$2;}'`
> done
> done
>
>
> Esto te renombra de forma automatica y recursiva como tu quieres,
> comenzando en el directorio X que tu le indiques.

Este sistema puede dar problemas si hay nombres con puntos, como
directorio.primero/fichero.que.quieres.cambiar.met.bak, o si hay espacios
en
los nombres (no sé exactamente como nombra los ficheros y directorios
overnet)
yo haría
 mv "${j}" "`echo ${j} | sed 's/met.bak$/met/g'`"


--

Miguel Rodriguez Penabad [EMAIL PROTECTED]
Laboratorio de Bases de Datos
http://emilia.dc.fi.udc.es/labBD
Despacho 0.01Tel. 981
167000 ext. 1333
Facultade de Informática Universidade da Coruña
(Spain)



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact
[EMAIL PROTECTED]








Re: Renombrar recursivamente

2004-02-27 Por tema Miguel Rodríguez Penabad
On Friday 27 February 2004 10:38, [EMAIL PROTECTED] wrote:
> Hola Salva, hazte un shell, del tipo:
>
> for i in `find X -type d`
> do
> for j in `ls -1 ${i}/*.met.bak`
> do
> mv ${j} `echo ${j} | awk -F'.' '{printf $1"."$2;}'`
> done
> done
>
>
> Esto te renombra de forma automatica y recursiva como tu quieres,
> comenzando en el directorio X que tu le indiques.

Este sistema puede dar problemas si hay nombres con puntos, como
directorio.primero/fichero.que.quieres.cambiar.met.bak, o si hay espacios en 
los nombres (no sé exactamente como nombra los ficheros y directorios 
overnet)
yo haría 
mv "${j}" "`echo ${j} | sed 's/met.bak$/met/g'`"


-- 

Miguel Rodriguez Penabad[EMAIL PROTECTED]
Laboratorio de Bases de Datos   http://emilia.dc.fi.udc.es/labBD
Despacho 0.01   Tel. 981 167000 ext. 1333
Facultade de InformáticaUniversidade da Coruña (Spain)




Re: Renombrar recursivamente

2004-02-27 Por tema pagonzalez



Hola Salva, hazte un shell, del tipo:

for i in `find X -type d`
do
for j in `ls -1 ${i}/*.met.bak`
do
mv ${j} `echo ${j} | awk -F'.' '{printf $1"."$2;}'`
done
done


Esto te renombra de forma automatica y recursiva como tu quieres,
comenzando en el directorio X que tu le indiques.

Saludos y gracias.



   
  "Salva."  
   
  <[EMAIL PROTECTED]  Para: 
debian-user-spanish@lists.debian.org  
  rg>  cc:  
   
   Asunto:   Renombrar 
recursivamente  
  26/02/2004 21:01  
   

   

   




Hola,

Estoy usando overnet(cliente p2p) y de vez en cuando me peta y me deja
de descargar, ocurre que tengo que renombrar los ficheros *.met.bak a
*.met de cada directorio de cada descarga, lo que a veces es un poco
coñazo.

¿Sabéis si hay algún programa que renombre recursivamente dentro de los
directorios?

Salva


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact
[EMAIL PROTECTED]








Re: Renombrar recursivamente

2004-02-26 Por tema Christoph Simon
On Thu, 26 Feb 2004 21:01:03 +0100
"Salva." <[EMAIL PROTECTED]> wrote:

> Hola,
> 
> Estoy usando overnet(cliente p2p) y de vez en cuando me peta y me deja 
> de descargar, ocurre que tengo que renombrar los ficheros *.met.bak a 
> *.met de cada directorio de cada descarga, lo que a veces es un poco coñazo.
> 
> ¿Sabéis si hay algún programa que renombre recursivamente dentro de los 
> directorios?

Primero te haces un pequeño script:

#!/bin/sh

mv $1 `dirname $1`/`basename $1 .bak`

Si lo escrives en un fichero renom.sh, poderá hacer

$ find . -name "*.met.bak" -exec ./renom '{}' \;

Espero que funcione.



Re: Renombrar recursivamente

2004-02-26 Por tema Israel Herraiz Tabernero
El jue, 26-02-2004 a las 21:01, Salva. escribió:
> ¿Sabéis si hay algún programa que renombre recursivamente dentro de los 
> directorios?

Python es tu amigo:

#!/usr/bin/env python
import os

def renombraDir(directorio):
lista_met = [x for x in os.listdir(directorio) if x.find(".met") is not 
-1 and not os.path.isdir(x)]
i = 0
for l in lista_met:
print "Moviendo "+str(l)+" a "+str(l)+".bak"
os.system("cd "+str(directorio)+" && mv "+str(l)+" 
"+str(l)+".bak")
i = i + 1

 
print "***"
print str(i)+" archivos renombrados en el directorio "+str(directorio)
print "***"

 
def recorreDirectorios(directorio_padre):
lista_dir = [x for x in os.listdir(directorio_padre) if 
os.path.isdir(x)]

 
for l in lista_dir:
renombraDir(l)

 
if __name__ == "__main__":
recorreDirectorios(".")
# Fin de programa

Copia y pega el programa en un archivo, por ejemplo renombra_met.py,
después dale permisos de ejecución (chmod a+x renombra_met.py), y
ejecútalo en el directorio que quieras:

cp renombra_met.py directorio
cd directorio
./renombra_met.py

Por cierto, de nada ;-)
-- 
/|\   Israel Herraiz <[EMAIL PROTECTED]> 
   /_|_\  Fingerprint: 1D08 6AB1 709D 37A2 0CFD
   \ | /   _   9733 CEE4 0EA0 6248 BA12
\|/   ( )  _._
 '.U .'_|_'.   
   '.   '.  |(o_   (o_   (o_  
{o_   (o_//\_.___  //|   //\  
(')_  (\)_   V_/_'oo'  V_|_  V__)_


signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada	digitalmente