仅复制包含子文件夹中文件的文件

时间:2015-09-29 08:02:10

标签: shell command-line centos

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

  • Folder1中
    • SubFolder1
      • File1中
      • 文件2
    • SubFolder2
      • 文件3
      • FILE4
    • SubFolder3
      • File5
      • File6
    • File7
    • File8

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

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

2 个答案:

答案 0 :(得分:0)

使用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

答案 1 :(得分:0)

一个简单的

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

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

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