Foros del Web » Administración de Sistemas » Unix / Linux »

script que busque y copie

Estas en el tema de script que busque y copie en el foro de Unix / Linux en Foros del Web. hi, tengo que hacer un programa que busque musica mp3 desperdigados por todo un directorio con n subdirectorios y n niveles y que los copie/mueva ...
  #1 (permalink)  
Antiguo 28/12/2006, 08:33
 
Fecha de Ingreso: julio-2005
Ubicación: Mexico
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
script que busque y copie

hi, tengo que hacer un programa que busque musica mp3 desperdigados por todo un directorio con n subdirectorios y n niveles y que los copie/mueva a un solo directorio, pero no me sale , esto es lo que se me ocurrio:
Código:

Código:
#!/bin/bash 
for i in $( find ./ -name "*.mp3" ); do 
  cp $i ./musica 
done
pero no me funciona por que los archivos que tienen espacios en su nombre pues hecahn a perder mi pequeño script. Alguien tiene alguna idea de como solucionarlo, o a lo mejor con otro lenguaje sea mas facil
__________________
SELECT * FROM LA_VIDA
  #2 (permalink)  
Antiguo 28/12/2006, 09:56
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Re: script que busque y copie

cambia la linea del cp por:
Código:
cp "$i" ./musica
y probá.. Saludos.
__________________
¡Volviendo a la programación!
  #3 (permalink)  
Antiguo 28/12/2006, 10:08
 
Fecha de Ingreso: julio-2005
Ubicación: Mexico
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: script que busque y copie

nop no funciona
__________________
SELECT * FROM LA_VIDA
  #4 (permalink)  
Antiguo 28/12/2006, 10:18
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 21 años, 9 meses
Puntos: 29
Re: script que busque y copie

¿Porque no usas el comando exec de find en vez de hacer un for?

Sintaxis: find (que buscar) exec (que hacer con lo que se encontró)

O con xargs puedes hacer algo con la salida estandar...

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #5 (permalink)  
Antiguo 28/12/2006, 10:31
 
Fecha de Ingreso: julio-2005
Ubicación: Mexico
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: script que busque y copie

ok pero que argumento le paso a "cp" como fuente?????

es decir como cacho lo que encontro find
__________________
SELECT * FROM LA_VIDA
  #6 (permalink)  
Antiguo 28/12/2006, 10:49
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 21 años, 9 meses
Puntos: 29
Re: script que busque y copie

La salida estandar la toma xargs mira este ejemplo

find . -iname *mp3 | xargs mv folder

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #7 (permalink)  
Antiguo 28/12/2006, 11:29
 
Fecha de Ingreso: julio-2005
Ubicación: Mexico
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: script que busque y copie

me pone
cp: se copian varios ficheros, pero el último argumento «./mi directorio/micancion.mp3»
no es un directorio

:(
__________________
SELECT * FROM LA_VIDA
  #8 (permalink)  
Antiguo 28/12/2006, 12:00
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 21 años, 9 meses
Puntos: 29
Re: script que busque y copie

Te recomiendo que mires el man find al final hay unos ejemplos para que veas cómo funciona el find con exec o con xargs...

Edito:
Cita:
find . -iname *.mp3 | xargs mv --target-directory=../d
Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”

Última edición por Koveart; 28/12/2006 a las 12:36
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:20.