2014-10-08 83 views
0

想象的文件结构是这样的:rsync的复制从特定的子文件夹只有特定的文件,而无需创建空文件夹

test 
├── a 
│   ├── 0 
│   │   ├── file0.rtf 
│   │   ├── file0.txt 
│   │   ├── file1.rtf 
│   │   ├── file1.txt 
│   │   ├── file2.rtf 
│   │   └── file2.txt 
│   ├── 1 
│   │   ├── file0.rtf 
│   │   ├── file0.txt 
│   │   ├── file1.rtf 
│   │   ├── file1.txt 
│   │   ├── file2.rtf 
│   │   └── file2.txt 
│   ├── 2 
│   │   ├── file0.rtf 
│   │   ├── file0.txt 
│   │   ├── file1.rtf 
│   │   ├── file1.txt 
│   │   ├── file2.rtf 
│   │   └── file2.txt 
│   └── 3 
│    ├── file0.rtf 
│    ├── file0.txt 
│    ├── file1.rtf 
│    ├── file1.txt 
│    ├── file2.rtf 
│    └── file2.txt 
└── b 
    ├── 0 
    │   ├── file0.rtf 
    │   ├── file0.txt 
    │   ├── file1.rtf 
    │   ├── file1.txt 
    │   ├── file2.rtf 
    │   └── file2.txt 
    ├── 1 
    │   ├── file0.rtf 
    │   ├── file0.txt 
    │   ├── file1.rtf 
    │   ├── file1.txt 
    │   ├── file2.rtf 
    │   └── file2.txt 
    ├── 2 
    │   ├── file0.rtf 
    │   ├── file0.txt 
    │   ├── file1.rtf 
    │   ├── file1.txt 
    │   ├── file2.rtf 
    │   └── file2.txt 
    └── 3 
     ├── file0.rtf 
     ├── file0.txt 
     ├── file1.rtf 
     ├── file1.txt 
     ├── file2.rtf 
     └── file2.txt 

我哪里不知道ab的真实姓名。尽管如此,我想从ab(但是它们被命名)的子文件夹复制所有*.txt文件,如果它们在子文件夹0中。

,如果我使用

rsync -avz --include=*/ --include='*/0/*.txt' --exclude=* test/ test2/ 

然而样的作品,rsync的创建空文件夹123,我想避免的。我该怎么做呢?从上面的rsync命令

输出:

sending incremental file list 
a/ 
a/0/ 
a/0/file0.txt 
a/0/file1.txt 
a/0/file2.txt 
a/1/ 
a/2/ 
a/3/ 
b/ 
b/0/ 
b/0/file0.txt 
b/0/file1.txt 
b/0/file2.txt 
b/1/ 
b/2/ 
b/3/ 

我想

sending incremental file list 
a/ 
a/0/ 
a/0/file0.txt 
a/0/file1.txt 
a/0/file2.txt 
b/ 
b/0/ 
b/0/file0.txt 
b/0/file1.txt 
b/0/file2.txt 

回答

0

原来,答案很简单。只需添加--prune-empty-dirs标志就行。

rsync -avz --include=*/ --include='*/0/*.txt' --exclude=* --prune-empty-dirs test1/ test2/ 

这就是我想要的。

相关问题