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
我需要从每个子文件夹中递归复制 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