如何递归复制子文件夹的子集

如何递归复制子文件夹的子集

我有大量文件夹,每个文件夹包含多个子文件夹。类似这样的

/mnt/data1/Folder1/subjfolder1, /mnt/data/Folder1/subjfolder2, /mnt/data/Folder1/subjfolder3
/mnt/data1/Folder2/subjfolder1, /mnt/data/Folder2/subjfolder2, /mnt/data/Folder2/subjfolder3
...

我喜欢复制 Folder1、Folder2 等,但只将每个文件夹中的 subjfolder2 复制到新位置,例如 data2。如下所示:

/mnt/data2/Folder1/subjfolder2
/mnt/data2/Folder2/subjfolder2
...

我不想复制 Folder1、2 等的全部内容,只想复制每个文件夹中的 subjfolder2。希望这很清楚。有人能帮忙吗?

答案1

这种事情可以通过简单的 shell glob 来完成:

cp -rt path/to/destination/ /mnt/data2/Folder?/subjfolder2

(匹配后面Folder跟着任意单个字符的名称)

cp -rt path/to/destination/ /mnt/data2/Folder[0-9]/subjfolder2

(匹配名称中Folder后跟任意单个十进制数字

cp -rt path/to/destination/ /mnt/data2/Folder*/subjfolder2

(匹配后面Folder跟着任意字符串的名称)。

或者,要匹配一组特定的文件夹,您可以使用括号扩展

cp -rt path/to/destination/ /mnt/data2/Folder{1..17}/subjfolder2

相关内容