ツリーの一部のファイルを別のフォルダにシンボリックリンクし、フォルダ構造を維持する

ツリーの一部のファイルを別のフォルダにシンボリックリンクし、フォルダ構造を維持する

このツリーを想定します (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

関連情報