Copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios[SOLUCIONADO]

Comentarios sobre el buen funcionamiento del sistema y como personalizarlo a tus necesidades.

Moderadores: doc, mcun

Responder
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios[SOLUCIONADO]

Mensaje por hipersayan_x »

Necesito copiar un montón de archivos de una determinada extensión a otro pero conservando tal cual la estructura del directorio original.
Me explico, supongamos que adentro de mi carpeta ~/Música tengo varios archivos mp3 + archivos basura + carpetas, y adentro de ciertas capetas, mas archivos mp3 + archivos basura + carpetas, y así sucesivamente. Y quiero copiar todos los mp3 a otro directorio, por ejemplo a /media/pendrive pero conservando tal cual la misma estructura de directorios, por ejemplo:
~/Música/musica_1.mp3 -> /media/pendrive/musica_1.mp3
~/Música/carpeta/musica_2.mp3 -> /media/pendrive/carpeta/musica_2.mp3
~/Música/carpeta/sub_carpeta/musica_3.mp3 -> /media/pendrive/carpeta/sub_carpeta/musica_3.mp3
Obviamente que he intentado hacer, por ejemplo, cp ~/Música/*/*.mp3 /media/pendrive, pero no hace lo que estoy buscando.
Alguna idea como implementar esto en bash script?
Última edición por hipersayan_x el Mar Ago 10, 2010 10:01 pm, editado 1 vez en total.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Avatar de Usuario
Teh
Forista Medio
Forista Medio
Mensajes: 310
Registrado: Dom Jun 03, 2007 7:00 am
Ubicación: Tijuana, Méjico

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por Teh »

¿cp -R ~/Lo/que/se/te/antoje no funciona? -R de recursivo copia todo lo que especifiques incluido sus sub-directorios.

O es que no he entendido tu duda u_u

Por cierto, http://www.commandlinefu.com/commands/browse <-- Cualquier problema que incluya "comando en *nix", allí seguro lo resuelves xD!
[ last.fm ] [ blog ] [ Desktop ] [ Band ]

Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por niky45 »

me parece que tendras que hacer un script tipo el F4A, pero para copiar.

yo ahora estoy muy dormida (me acabo de levantar.... :? ) pero si eso, luego te lo hago... Porque es solo un poquito de bash scripting, no tiene que ser dificil.

:)
no obstante... mira a ver si la solucion de Teh, funciona. (yo estoy muy dormida para saber como va cp, pero es posible que funcione)

EDIT:

lo estoy pensando, y... a ver. el tema es que ciertamente, el propio cp es el que tiene que crear los subdirectorios. Traduccion: que le hagas caso a Teh, y ya si no funciona, miro lo del script.

otra opcion es mmv: LINK pero que ni idea de como va.... :?
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por hipersayan_x »

Teh escribió:¿cp -R ~/Lo/que/se/te/antoje no funciona? -R de recursivo copia todo lo que especifiques incluido sus sub-directorios.
Nop, copia la estructura tal cual, pero también copia archivos que yo no quiero, por eso digo que necesitaría filtrar los archivos por su extensión, misma estructura de directorio, pero solo un tipo determinado de archivo
niky45 escribió:me parece que tendras que hacer un script tipo el F4A, pero para copiar.
Si por mi fuera, lo hago en python, pero no da esta vez, y mis conocimientos en bash son bastante limitados :(
Para que se den una idea, esto es lo que estoy intentando hacer:

Código: Seleccionar todo

python_version="3.1.2"
python_file="Python-$python_version.tar.bz2"

wget --retry-connrefused -c "http://www.python.org/ftp/python/$python_version/$python_file"
tar -xjvf $python_file
cd "Python-$python_version"
./configure --enable-static
make
cd ..
mkdir -p "python/bin" "python/doc" "python/lib"
cp "Python-$python_version/python" "python/bin"

# Aca se supone que solo deberia copiar los *.py del directorio Lib y conservando la misma estructura.
cp "Python-$python_version/Lib" "python/lib"
Si, ya se que python 3 ya esta en los repos, pero yo necesito crear una compilación aislada y estatica.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por mcun »

copia y luego elimina
¿cp -R ~/Lo/que/se/te/antoje no funciona? -R de recursivo copia todo lo que especifiques incluido sus sub-directorios.


Nop, copia la estructura tal cual, pero también copia archivos que yo no quiero, por eso digo que necesitaría filtrar los archivos por su extensión, misma estructura de directorio, pero solo un tipo determinado de archivo
rm -fr ~/Lo/que/se/te/antoje/*.exe :D
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por hipersayan_x »

m[cun] escribió:copia y luego elimina
Nop, tambien lo pense pero tengo los mismos problemas que con cp.
Lo primero que voy a intentar hacer es recorrer el arbol de directorios.

http://enjava.blogspot.com/2008/01/scri ... rio-y.html

Mi primer intento de script seria este:

Código: Seleccionar todo

ls -a|while read filename
do
echo $filename
done
Ovbiamente, esto solo lista el primer nivel, tendra que diferenciar entre carpetas y archivos, y a las carpetas guardarlas en una lista para volver a recorrerlas en el while.
Todo esto lo estoy haciendo un poco as ojo, porque ni me he leido un totorial de bash, asi que vamos a ver que tal me sale :D
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Avatar de Usuario
Teh
Forista Medio
Forista Medio
Mensajes: 310
Registrado: Dom Jun 03, 2007 7:00 am
Ubicación: Tijuana, Méjico

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por Teh »

Vale. http://ask.metafilter.com/106442/How-to ... ure-intact

No lo he comprobado, pero si de algo sirve.
[ last.fm ] [ blog ] [ Desktop ] [ Band ]

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1830
Registrado: Dom Oct 10, 2004 7:00 am

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por neurus »

Supongamos que el directorio inicial es Musica (dentro están todos los subdirectorios con archivos) y el directorio destino es Copia.

cp -R --copy-contents *.mp3 Musica/ Copia

Saludos.

Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por niky45 »

has mirado a mmv ?? tecnicamente, es un gestor de archivos para la linea de comandos... tiene que ser capaz de hacer eso!!

y en cuanto a cp.... esto funciona??

Código: Seleccionar todo

cp   /ruta/*.ext   /dir    -Rvf
porque... eso solo elige los archivos con extension ext. (lo que no tengo muy claro es que cree correctamente los directorios)

:D
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: ¿Como puedo copiar archivos recursivamente pero filtrados por extención y conservando la estructura de los directorios?

Mensaje por hipersayan_x »

Teh escribió:Vale. http://ask.metafilter.com/106442/How-to ... ure-intact

No lo he comprobado, pero si de algo sirve.
Sirvio, y mucho :yahoo:

Código: Seleccionar todo

python_version="3.1.2"
python_file="Python-$python_version.tar.bz2"

wget --retry-connrefused -c "http://www.python.org/ftp/python/$python_version/$python_file"
tar -xjvf $python_file
cd "Python-$python_version"
./configure --enable-static
make
cd ..
mkdir -p "python/bin" "python/doc" "python/lib"
cp "Python-$python_version/python" "python/bin"
# Esto era lo que buscaba
rsync -av --include '*.py' --include '*/' --exclude '*' Python-$python_version/Lib python/lib
Habría que pulirlo un poco pero ya esta. Gracias a todos.
niky45 escribió:has mirado a mmv ??
Nop, ni siquiera esta instalado, y yo busco comandos que estén en el sistema base únicamente, por portabilidad.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje