Linux - 如何从每个文件夹递归复制 N 个文件并保持相同的文件夹结构

Linux - How to copy recursive from each folder N files and keep same folder structure

我需要从每个子文件夹中递归复制 10 files/images。

/dir1 
├── subdir1 
│   ├── file1 
│   └── fileN
│
├── subdir2 
│   ├── file1 
│   └── fileN 
│
├── subdir3 
│   ├── file1 
│   └── fileN 
│
└── subdirN 
    ├── file1 
    └── fileN 
... 

结果应该是:

/newdir1 
├── subdir1 
│   ├── file1 
│   └── file10 
│
├── subdir2 
│   ├── file1 
│   └── file10 
│
├── subdir3 
│   ├── file1 
│   └── file10 
│
└── subdirN 
    ├── file1 
    └── file10 
... 

目录结构应相同,但每个文件夹最多应有 .每个原始文件夹中的 10 个随机文件。

如何使用 shell 脚本执行此操作?

我猜你不想复制所有文件(cp -r 命令建议),而只想复制 n 个文件。

假设我们有一个名为 foo 的目录,需要将 n=10 个文件从每个子目录移动到名为 bar 的特定位置。因此,shell 脚本循环将如下所示。

#!/bin/bash

for subdir in $(find ~/foo -type d); do
  subdir_relative=$(echo $subdir | sed 's:.*foo/::g')
  mkdir "$subdir_relative"
  for file in $(find "$subdir" -type f | head -n 10); do
    cp "$file" "~/bar/$subdir_relative/"
  done
done