Це можна зробити за допомогою -T
опції в cp
.
Див. Сторінку Man для cp
.
-T, --no-target-directory
treat DEST as a normal file
Отже, згідно з вашим прикладом, наступна структура файлів.
$ tree test
test
|-- bar
| |-- a
| `-- b
`-- foo
|-- a
`-- b
2 directories, 4 files
Ви можете бачити чітку різницю, коли використовуєте -v
для Verbose.
Коли ви використовуєте лише -R
варіант.
$ cp -Rv foo/ bar/
`foo/' -> `bar/foo'
`foo/b' -> `bar/foo/b'
`foo/a' -> `bar/foo/a'
$ tree
|-- bar
| |-- a
| |-- b
| `-- foo
| |-- a
| `-- b
`-- foo
|-- a
`-- b
3 directories, 6 files
Використовуючи опцію, -T
вона перезаписує вміст, обробляючи призначення як звичайний файл, а не каталог .
$ cp -TRv foo/ bar/
`foo/b' -> `bar/b'
`foo/a' -> `bar/a'
$ tree
|-- bar
| |-- a
| `-- b
`-- foo
|-- a
`-- b
2 directories, 4 files
Це повинно вирішити вашу проблему.