说我想将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/**/*!(/)
答案 0 :(得分:1)
一种选择是将find
与-type f
选项一起使用:
find dir -type f -exec cp {} dest \;