miércoles, julio 04, 2007

Como replicar una estructura de directorios

Aplica para: Linux
Usa: Línea de comandos (que bonito ¿no?)
Problema: Tienes una estructura de directorios que necesitas replicar completamente, y luego debes copiar los archivos dentro de cada carpeta original. La estructura la lograste escribir en un archivo (digamos que con un grep o algo similar).

Solución: En cómodos 2 "simples" comandos:
$ for a in `cat carpetas`; do echo $a | sed 's/\w*\.java//' | xargs -i mkdir -p respaldo/{}; done;
$ cat carpetas | xargs -i cp {} respaldo/{}


Para el caso del ejemplo "carpetas" es el archivo donde tengo la estructura original a replicar, incluyendo el listado de archivos .java que deseo copiar. "respaldo" viene siendo la carpeta de destino.

Quizás les sirve, quizás no...
Optimizable por cierto.

1 comentario:

José Ignacio Santa Cruz dijo...

La versión mejorada:

find . -type d -exec ls -d {} \; | xargs -i mkdir -p ./respaldo/{}

eso para replicar completamente la estructura de directorios.

cat archivos.txt | xargs -i mv {} ./respaldo/{}

para mover el listado de archivos (conforme al patrón de búsqueda que se haya usado) a la nueva ruta.