ツリー内のいくつかのファイルを別のフォルダにシンボリックリンクし、フォルダ構造を維持します。

ツリー内のいくつかのファイルを別のフォルダにシンボリックリンクし、フォルダ構造を維持します。

このツリー(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

関連情報