파일을 복사하고 대상 디렉토리를 동시에 작성하려면 어떻게해야합니까? file or directory깊고 바다가 존재하지 않습니다. 나는 남자

내가 원하는 cp aaa/deep/sea/blob.psdbbb/deep/sea/blob.psd

어떻게하면 내가 복사본을해야합니까 deepsea디렉토리 아래에 존재하지 않는 bbb(가) 모두가 필요한 디렉토리 및 복사 파일을 만듭니다 복사 너무?

지금 나는
No such file or directory깊고 바다가 존재하지 않습니다.

나는 남자 도움 페이지와 다른 질문을 통해 보았지만 아무것도 나에게 튀어 나오지 않았다.

내가 가진 가장 가까운 rcp것은 디렉토리를 사용하는 것 입니다.

rcp -r aaa/deep/sea/ bbb/deep/sea/

이것은 전체 디렉토리와 내용을 복사하지만 하나의 파일 만 원합니다. 그러나 그렇게하려고하면cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory



답변

이러한 상황에서 다음 기능을 사용하십시오.

copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }

그것을 다음과 같이 사용하십시오

copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd

그런데 GNU cp에는 --parents옵션이 있습니다. 실제로 원하는 것에 가깝지만 정확하게는 아닙니다. 필요하지 않은 것 같은 디렉토리를
만듭니다 aaa. 그러나 먼저 aaa다음과 같이 cd 하고 복사 할 수 있습니다 .

cd aaa && cp --parents deep/sea/blob.psd ../bbb/


답변

automake 와 같은 빌드 시스템에서 일반적 으로이 목적으로 사용되는 coreutilsinstall프로그램을 사용하는 것은 쉽습니다 .

install -D /path/to/source /path/to/destination

경로와 마찬가지로 경로의 모든 부분 을 install만듭니다 ( 참고 자료 참조) . 왜 당신이 그렇게하고 싶지 않은지 궁금 합니다. 전화 하고 매우 쉽습니다.mkdir -pman installmkdircp


답변

표준 (POSIX / Unix) 명령을 사용하면 다음과 같은 이점이 있습니다.

pax -rws ':^:dest/dir/:' file .


답변

을 사용하여 수행하는 방법을 cp모르지만 다음을 사용하는 것이 가능합니다 rsync.

$ rsync sourcefile dir/

dir존재하지 않아도되는 디렉토리는 어디에 있습니까 ? 다른 명령을 사용하여 동일한 것을 달성하는 다른 많은 방법이 있습니다.


답변

cd aaa
pax -rw deep/sea/blob.psd ../bbb

가지고 있지 않은 경우 pax(POSIX에서 명령하기 때문에 표준화 할 수있는 호환성이 너무 많은 cpio 및 tar의 표준 대체품으로 사용) cpio -p또는 tar -cf - … | tar -xf -대신 사용하십시오.


답변