我需要从每个子文件夹递归地复制10个文件/图像。
/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
关于linux - Linux-如何从每个文件夹复制递归N个文件并保持相同的文件夹结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40085308/