당신은 cp
이 사용 -T
옵션을 할 수 있습니다.
cp
에 대한 man 페이지를 참조하십시오.
-T, --no-target-directory
treat DEST as a normal file
따라서 파일 구조는 다음과 같습니다.
$ tree test
test
|-- bar
| |-- a
| `-- b
`-- foo
|-- a
`-- b
2 directories, 4 files
Verbose에 -v
을 사용하면 명확한 차이점을 확인할 수 있습니다.
-R
옵션 만 사용하는 경우. 당신이 옵션 -T
을 사용하면
$ 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
는 정상적인 파일이 아닌 디렉토리 같은 대상을 치료 , 내용을 덮어 씁니다.
$ cp -TRv foo/ bar/
`foo/b' -> `bar/b'
`foo/a' -> `bar/a'
$ tree
|-- bar
| |-- a
| `-- b
`-- foo
|-- a
`-- b
2 directories, 4 files
이렇게하면 문제가 해결됩니다.
바에 있지만 foo에는없는 파일은 제거되지 않습니다. – Ara
그 의미가 무엇인지 모르시겠습니까? 왜'cp' 명령이 소스에서 파일을 제거해야합니까? – anubhava
필자는 기존 디렉터리를 다른 디렉터리로 덮어 쓰면 결국 덮어 쓴 디렉터리가 다른 디렉터리의 복사본이어야한다고 생각했습니다. 즉, @ jonathan-wheeler 응답의 경우와 같이 foo의 사본이어야하지만 파일 표시 줄/c 및 foo/c가없는 경우 bar/c가 삭제되지 않습니다. 사이드 노트에서, 저는 Saurabh Meshram의 대답 중 하나가 아닌 것으로 나타났습니다. – Ara