如何使用globstar复制目录中的所有文件?

时间:2015-02-23 17:43:33

标签: bash shell pattern-matching glob

说我想将dir中的所有文件复制到dest

$ tree .
.
├── dest
└── dir
    ├── dir
    │   ├── file1
    │   └── file2
    └── file3

如果我知道文件名和目录深度,这很容易:

$ echo dir/f* dir/*/*
dir/file3 dir/dir/file1 dir/dir/file2

$ cp dir/f* dir/*/* dest/

$ tree dest/
dest/
├── file1
├── file2
└── file3

使用globstar也很容易只得到目录:

$ echo dir/**/*/
dir/dir/

但我不知道如何 glob 只有文件,例如以下不起作用:

$ echo dir/**/*!(/)
dir/**/*!(/)

1 个答案:

答案 0 :(得分:1)

一种选择是将find-type f选项一起使用:

find dir -type f -exec cp {} dest \;