Vincular simbólicamente algún archivo de un árbol a otra carpeta y conservar la estructura de carpetas

Vincular simbólicamente algún archivo de un árbol a otra carpeta y conservar la estructura de carpetas

Suponiendo este árbol (top-X y tX-sub-X son carpetas y todas las subcarpetas contienen un .csv y varias otras extensiones de archivo).

Base
├── top-1
│   ├── t1_sub-1 
│   ├── t1_sub-2 
│   └── t1_sub-3 
└── top-2
    ├── t2_sub-1
    ├── t2_sub-2
    └── t2_sub-3

y todas las subcarpetas que contienen un .csv y varias otras extensiones de archivo.

¿Puedo vincular simbólicamente todos los .csv en la base a otro árbol y tener esto?

Symlinked_base
├── top-1 #directories aren't symlink
│   ├── t1_sub-1 #contains only .csv symlink
│   ├── t1_sub-2 
│   └── t1_sub-3 
└── top-2
    ├── t2_sub-1
    ├── t2_sub-2
    └── t2_sub-3

No puedo probarlo ahora pero haría:

sudo find . -name "*.csv" -exec cp -Rs '{}' /path/to/Symlinked_base/

Si -R no es compatible, ¿funcionaría lo siguiente? :

 sudo find . -name "*.csv" -exec cp -parents -s '{}' /path/to/Symlinked_base/

Respuesta1

Stow es un paquete para mantener árboles de enlaces simbólicos. Puede usar la opción --no-folding para crear directorios en el destino en lugar de vincular los directorios mismos; eso debería brindarle lo que desea.

https://www.gnu.org/software/stow/manual/stow.html

información relacionada