2014-10-08 108 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/ 

這就是我想要的。

相關問題