Создайте символическую ссылку на файл дерева в другой папке и сохраните структуру папок

Создайте символическую ссылку на файл дерева в другой папке и сохраните структуру папок

Предположим, что это дерево (top-X и tX-sub-X — это папки, а все подпапки содержат .csv и различные другие расширения файлов).

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

и все подпапки, содержащие файлы с расширением .csv и другими различными расширениями.

Могу ли я создать символическую ссылку на все .csv в базе на другое дерево и получить это:

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

Я не могу проверить это сейчас, но хотел бы:

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

если -R не поддерживается, будет ли работать следующее?:

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

решение1

Stow — это пакет для поддержки деревьев символических ссылок. Вы можете использовать опцию --no-folding для создания каталогов в месте назначения вместо связывания самих каталогов — это должно дать вам то, что вы хотите.

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

Связанный контент