仅复制文件,包括子文件夹中的文件

Copy only files including files in subfolder

我有两个结构相同的根文件夹:

如何将 'Folder1' 中的所有文件(包括其子文件夹中的文件)复制到另一个目标名称 'Folder2'。

'Folder2' 与 'Folder1' 具有相同的结构,所有子文件夹都已在 'Folder2' 中创建。

使用rsync工具

数据设置:使用各自的子目录创建 Folder1 和 Folder2

:~/User> ls -laRt Folder1/
Folder1/:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f7
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f8
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub3
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub2
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub1

Folder1/sub3:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f5
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f6

Folder1/sub2:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f3
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f4

Folder1/sub1:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f1
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f2


:~/User> ls -laRt Folder2
drwxr-xr-x 2 test test 4096 2015-09-29 09:10 sub1
drwxr-xr-x 2 test test 4096 2015-09-29 09:10 sub2
drwxr-xr-x 2 test test 4096 2015-09-29 09:10 sub3

使用 rsync 复制

:~/User> rsync -avh Folder1/ Folder2/
building file list ... done
./
f7
f8
sub1/
sub1/f1
sub1/f2
sub2/
sub2/f3
sub2/f4
sub3/
sub3/f5
sub3/f6

sent 537 bytes  received 220 bytes  1.51K bytes/sec
total size is 0  speedup is 0.00

验证

:~/User> ls -laRt Folder2
Folder2:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f7
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f8
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub3
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub2
drwxr-xr-x 2 test test 4096 2015-09-29 09:08 sub1

Folder2/sub3:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f5
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f6

Folder2/sub2:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f3
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f4

Folder2/sub1:
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f1
-rw-r--r-- 1 test test    0 2015-09-29 09:08 f2

一个简单的

cp -a /path/to/folder1/* /path/to/folder2

会成功的。该命令将检查 folder1 的子文件夹是否已存在于 folder2 中(如果不存在则创建它),复制包含的文件并对找到的任何子文件夹递归执行此操作。

有关详细信息,请参阅 the cp man page(您也可以通过发出 man cp 在 shell 上本地阅读)。