我需要递归地从每个子文件夹复制10个文件/图像。
account.invoice
结果应为:
/dir1
-- /subdir1
-- -- file1
-- -- fileN
-- /subdir2
-- -- file1
-- -- fileN
-- /subdir3
-- -- file1
-- -- fileN
-- /subdirN
-- -- file1
-- -- fileN
...
目录结构应该相同,但每个文件夹应该具有最大值。来自每个原始文件夹的10个随机文件。
如何使用shell脚本执行此操作?
答案 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