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

时间:2016-10-17 11:33:17

标签: linux shell command

我需要递归地从每个子文件夹复制10个文件/图像。

account.invoice

结果应为:

/dir1 
-- /subdir1 
-- -- file1 
-- -- fileN 
-- /subdir2 
-- -- file1 
-- -- fileN 
-- /subdir3 
-- -- file1 
-- -- fileN 
-- /subdirN 
-- -- file1 
-- -- fileN 
... 

目录结构应该相同,但每个文件夹应该具有最大值。来自每个原始文件夹的10个随机文件。

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

1 个答案:

答案 0 :(得分:1)

我想你不想复制所有文件(由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