任意の数のファイルへのディレクトリ構造のコピー

任意の数のファイルへのディレクトリ構造のコピー

特定のディレクトリ構造をコピーしてコピーするファイルの数をランダムに選択するエレガントで迅速な方法はありますか?たとえば、次のような構造があります。

--MainDir
  --SubDir1
    --SubSubDir1
      --file1
      --file2
      --...
      --fileN
    --...
    --SubSubDirN
      --file1
      --file2
      --...
      --fileN
  --...

フォルダ構造全体をコピーしたいが、各SubSubDirの{files1-filesN}から特定の数のランダムファイルのみを選択してコピーします。

ベストアンサー1

タグ付けしたので、linux私はGNUユーティリティを使います。

ディレクトリ構造をから$src次にコピーします$dest

find "$src" -type d -print0 | cpio -padmv0 "$dest"

$nfileまた、次の各リーフディレクトリから任意のファイルサンプルをコピーします$src

find "$src" -type d -links 2 -exec \
    sh -c 'find "$1" -type f -print0 | shuf -z -n "$2"' sh {} "$nfiles" \; | \
    cpio -padmv0  "$dest"

ここで、最初はfindリーフディレクトリ()を見つけ、-links 22番目はfind各サブディレクトリでファイルを探します。 shuf任意のファイルサンプルを選択し、最後にcpioコピーします。

おすすめ記事